Mixin是用来混合不同的类或接口,形成一个新的,包含多个类或接口功能的方式,在DynamicProxy中,是通过GeneratorContext来添加不同的实例,然后通过ProxyGenerator来创建的。
通常,将一个实现了某个接口的类,与另一个实现了某个接口的类,混合起来,是这么做的:
首先定义接口IA,并实现CA,定义接口IB,并实现CB。
然后
CA ca = new CA();
CB cb = new CB();
GeneratorContext context = new GeneratorContext();
context.AddMixinInstance(ca);
context.AddMixinInstance(cb);
ProxyGenerator generator = new ProxyGenerator();
object proxy = generator.CreateCustomClassProxy(typeof(object), new StandardInterceptor(), context);
然后使用IA和IB去强制转换proxy就能同时使用IA和IB定义的功能了。
浙公网安备 33010602011771号