我正在尝试将一些代码从使用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对象的调用,并根据需要将它们委托给'shape‘或'color’对象。
但是,我一直在尝试新的DynamicProxy2,但找不到等效的实现。
发布于 2010-04-17 14:30:52
好的,如果我没理解错的话,你有两个接口和实现它们的另一个接口,你想在第三个接口下混合这两个接口的实现,对吗?
public IColoredShape CreateColoredShapeMixin(IHasShape shape, IHasColor color)
{
var options = new ProxyGenerationOptions();
options.AddMixinInstance(shape);
options.AddMixinInstance(color);
var proxy = generator.CreateClassProxy(typeof(object), new[] { typeof(IColoredShape ) }, options) as IColoredShape;
return proxy;
}https://stackoverflow.com/questions/2656663
复制相似问题