首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >帮助将mixins从Castle.DynamicProxy迁移到DynamicProxy2

帮助将mixins从Castle.DynamicProxy迁移到DynamicProxy2
EN

Stack Overflow用户
提问于 2010-04-17 07:54:00
回答 1查看 1K关注 0票数 1

我正在尝试将一些代码从使用DynamicProxy更新到DynamicProxy2。特别是,我们使用DynamicProxy来提供两个类的混合。设置如下所示:

代码语言:javascript
运行
复制
public interface IHasShape
{
    string Shape { get; }
}

public interface IHasColor
{
    string Color { get; }
}

public interface IColoredShape : IHasShape, IHasColor
{
}

然后假设IHasShape和IHasColor的一些明显的具体实现,我们将创建一个如下所示的混合:

代码语言:javascript
运行
复制
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,但找不到等效的实现。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-17 14:30:52

好的,如果我没理解错的话,你有两个接口和实现它们的另一个接口,你想在第三个接口下混合这两个接口的实现,对吗?

代码语言:javascript
运行
复制
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;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2656663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档