我试图使用DynamicProxy到DynamicProxy2更新一些代码。 特别是我们在哪里使用DynamicProxy提供两种类型的混入。 安装程序是这样的:
public interface IHasShape
{
string Shape { get; }
}
public interface IHasColor
{
string Color { get; }
}
public interface IColoredShape : IHasShape, IHasColor
{
}
然后,假设IHasShape和IHasColor的一些明显的具体实现,我们将创建一个混合是这样的:
public IColoredShape CreateColoredShapeMixin(IHasShape shape, IHasColor color)
{
ProxyGenerator gen = new ProxyGenerator();
StandardInterceptor interceptor = new StandardInterceptor();
GeneratorContext context = new GeneratorContext();
context.AddMiniInstance(color);
return gen.CreateCustomProxy(typeof(IColoredShape), intercetor, shape, context);
}
有IColoredShape,除了作为代理创建的结果没有具体实现。 所述StandardInterceptor取IColoredShape对象上的调用和代表它们要么“形状”或“颜色”的对象适当。
不过,我一直在玩弄新DynamicProxy2并不能找到等价实现。