数码资讯
动态代理模式和混合模式的使用实例5
领先的ORM和国际奥委会的产品离不开动态代理,作为开发商,最不重视内部的动态代理机制,而是理解和模式是必要的,一般的规则,例如:虽然你开发使用POCO期间,由于开放的动态代理,运行期间没有少。在这纸,5代理的生成模式和1混合模式的简要介绍,并最后给出了一个实例。 复制代码代码如下所示: iplaya
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
领先的ORM和国际奥委会的产品离不开动态代理,作为开发商,最不重视内部的动态代理机制,而是理解和模式是必要的,一般的规则,例如:虽然你开发使用POCO期间,由于开放的动态代理,运行期间没有少。在这纸,5代理的生成模式和1混合模式的简要介绍,并最后给出了一个实例。
复制代码代码如下所示:
iplayable公共接口
{
无效播放();
}
动物类:iplayable
{
公共虚拟无效播放()
{
console.writeline(动物玩。);
}
}
公犬类:动物
{
公共覆盖无效播放()
{
console.writeline(狗玩。);
}
}
irunable公共接口
{
运行();
}
公共课:irunable runability
{
公共空白运行()
{
console.writeline(runability。跑);
}
}
公共课animalinterceptor:iinterceptor
{
公共无效拦截(iinvocation调用)
{
console.writeline(前animalinterceptor。拦截);
如果(invocation.invocationtarget!= null)
{
调用。继续();
}
console.writeline(后animalinterceptor。拦截);
}
}
第一:classproxy
复制代码代码如下所示:
{
console.writeline(************* classproxy ************* ;
无功发生器=新proxygenerator();
VaR的动物= generator.createclassproxy(新animalinterceptor());
动物(游戏);
console.writeline(animal.gettype());
console.writeline(animal.gettype()。BaseType);
无功compositefield = animal.gettype()。GetField(__target );
console.writeline(compositefield);
foreach(在animal.gettype VAR接口型()GetInterfaces()))
{
Console.WriteLine (interfaceType);
}
}
第二种:classproxywithtarget
复制代码代码如下所示:
{
console.writeline(************* classproxywithtarget ************* ;
无功发生器=新proxygenerator();
VaR的动物= generator.createclassproxywithtarget(新狗()、新AnimalInterceptor()));
动物(游戏);
console.writeline(animal.gettype());
console.writeline(animal.gettype()。BaseType);
无功compositefield = animal.gettype()。GetField(__target );
console.writeline(compositefield);
foreach(在animal.gettype VAR接口型()GetInterfaces()))
{
console.writeline(接口型);
}
}
第三种:interfaceproxywithouttarget
复制代码代码如下所示:
{
console.writeline(************* interfaceproxywithouttarget ************* ;
无功发生器=新proxygenerator();
VaR的动物= generator.createinterfaceproxywithouttarget(新animalinterceptor());
动物(游戏);
console.writeline(animal.gettype());
console.writeline(animal.gettype()。BaseType);
无功compositefield = animal.gettype()。GetField(__target );
console.writeline(compositefield);
foreach(在animal.gettype VAR接口型()GetInterfaces()))
{
console.writeline(接口型);
}
}
第四种:interfaceproxywithtarget
复制代码代码如下所示:
{
console.writeline(************* interfaceproxywithtarget ************* ;
无功发生器=新proxygenerator();
VaR的动物= generator.createinterfaceproxywithtarget(新狗()、新AnimalInterceptor()));
动物(游戏);
console.writeline(animal.gettype());
console.writeline(animal.gettype()。BaseType);
无功compositefield = animal.gettype()。GetField(__target );
console.writeline(compositefield);
foreach(在animal.gettype VAR接口型()GetInterfaces()))
{
console.writeline(接口型);
}
}
第五种:interfaceproxywithtargetinterface
复制代码代码如下所示:
{
console.writeline(************* interfaceproxywithtargetinterface ************* ;
无功发生器=新proxygenerator();
VaR的动物= generator.createinterfaceproxywithtargetinterface(新狗()、新AnimalInterceptor()));
动物(游戏);
console.writeline(animal.gettype());
console.writeline(animal.gettype()。BaseType);
无功compositefield = animal.gettype()。GetField(__target );
console.writeline(compositefield);
foreach(在animal.gettype VAR接口型()GetInterfaces()))
{
console.writeline(接口型);
}
}
混合模式
复制代码代码如下所示:
{
console.writeline(************* mixin ************* ;
无功发生器=新proxygenerator();
VaR选项=新proxygenerationoptions();
Options.AddMixinInstance(新runability());
VaR的动物= generator.createclassproxy(选项,新的AnimalInterceptor());
动物(游戏);
(动物irunable)Run();
console.writeline(animal.gettype());
console.writeline(animal.gettype()。BaseType);
无功compositefield = animal.gettype()。GetField(__target );
console.writeline(compositefield);
foreach(在animal.gettype VAR场()GetFields()))
{
如果(field.name.startswith(__mixin ))
{
console.writeline(场);
}
}
foreach(在animal.gettype VAR接口型()GetInterfaces()))
{
console.writeline(接口型);
}
}
复制代码代码如下所示:
iplayable公共接口
{
无效播放();
}
动物类:iplayable
{
公共虚拟无效播放()
{
console.writeline(动物玩。);
}
}
公犬类:动物
{
公共覆盖无效播放()
{
console.writeline(狗玩。);
}
}
irunable公共接口
{
运行();
}
公共课:irunable runability
{
公共空白运行()
{
console.writeline(runability。跑);
}
}
公共课animalinterceptor:iinterceptor
{
公共无效拦截(iinvocation调用)
{
console.writeline(前animalinterceptor。拦截);
如果(invocation.invocationtarget!= null)
{
调用。继续();
}
console.writeline(后animalinterceptor。拦截);
}
}
第一:classproxy
复制代码代码如下所示:
{
console.writeline(************* classproxy ************* ;
无功发生器=新proxygenerator();
VaR的动物= generator.createclassproxy(新animalinterceptor());
动物(游戏);
console.writeline(animal.gettype());
console.writeline(animal.gettype()。BaseType);
无功compositefield = animal.gettype()。GetField(__target );
console.writeline(compositefield);
foreach(在animal.gettype VAR接口型()GetInterfaces()))
{
Console.WriteLine (interfaceType);
}
}
第二种:classproxywithtarget
复制代码代码如下所示:
{
console.writeline(************* classproxywithtarget ************* ;
无功发生器=新proxygenerator();
VaR的动物= generator.createclassproxywithtarget(新狗()、新AnimalInterceptor()));
动物(游戏);
console.writeline(animal.gettype());
console.writeline(animal.gettype()。BaseType);
无功compositefield = animal.gettype()。GetField(__target );
console.writeline(compositefield);
foreach(在animal.gettype VAR接口型()GetInterfaces()))
{
console.writeline(接口型);
}
}
第三种:interfaceproxywithouttarget
复制代码代码如下所示:
{
console.writeline(************* interfaceproxywithouttarget ************* ;
无功发生器=新proxygenerator();
VaR的动物= generator.createinterfaceproxywithouttarget(新animalinterceptor());
动物(游戏);
console.writeline(animal.gettype());
console.writeline(animal.gettype()。BaseType);
无功compositefield = animal.gettype()。GetField(__target );
console.writeline(compositefield);
foreach(在animal.gettype VAR接口型()GetInterfaces()))
{
console.writeline(接口型);
}
}
第四种:interfaceproxywithtarget
复制代码代码如下所示:
{
console.writeline(************* interfaceproxywithtarget ************* ;
无功发生器=新proxygenerator();
VaR的动物= generator.createinterfaceproxywithtarget(新狗()、新AnimalInterceptor()));
动物(游戏);
console.writeline(animal.gettype());
console.writeline(animal.gettype()。BaseType);
无功compositefield = animal.gettype()。GetField(__target );
console.writeline(compositefield);
foreach(在animal.gettype VAR接口型()GetInterfaces()))
{
console.writeline(接口型);
}
}
第五种:interfaceproxywithtargetinterface
复制代码代码如下所示:
{
console.writeline(************* interfaceproxywithtargetinterface ************* ;
无功发生器=新proxygenerator();
VaR的动物= generator.createinterfaceproxywithtargetinterface(新狗()、新AnimalInterceptor()));
动物(游戏);
console.writeline(animal.gettype());
console.writeline(animal.gettype()。BaseType);
无功compositefield = animal.gettype()。GetField(__target );
console.writeline(compositefield);
foreach(在animal.gettype VAR接口型()GetInterfaces()))
{
console.writeline(接口型);
}
}
混合模式
复制代码代码如下所示:
{
console.writeline(************* mixin ************* ;
无功发生器=新proxygenerator();
VaR选项=新proxygenerationoptions();
Options.AddMixinInstance(新runability());
VaR的动物= generator.createclassproxy(选项,新的AnimalInterceptor());
动物(游戏);
(动物irunable)Run();
console.writeline(animal.gettype());
console.writeline(animal.gettype()。BaseType);
无功compositefield = animal.gettype()。GetField(__target );
console.writeline(compositefield);
foreach(在animal.gettype VAR场()GetFields()))
{
如果(field.name.startswith(__mixin ))
{
console.writeline(场);
}
}
foreach(在animal.gettype VAR接口型()GetInterfaces()))
{
console.writeline(接口型);
}
}
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。