C# Castle DynamicProxy生成的代理能否强制将成员实现为显式接口实现?
例如,假设我定义了一个接口,如下所示:C# Castle DynamicProxy生成的代理能否强制将成员实现为显式接口实现?,c#,.net,interface,mixins,castle-dynamicproxy,C#,.net,Interface,Mixins,Castle Dynamicproxy,例如,假设我定义了一个接口,如下所示: public interface IWhatever { string Text { get; set; } } 我在mixin中实现它: public class WhateverMixin : IWhatever { string IWhatever.Text { get; set; } } 当我构建某个给定类的代理时,整个显式实现的接口成员显示为隐式实现,因此它将被发布 您知道我是否可以给Castle DynamicProxy
public interface IWhatever
{
string Text { get; set; }
}
我在mixin中实现它:
public class WhateverMixin : IWhatever
{
string IWhatever.Text { get; set; }
}
当我构建某个给定类的代理时,整个显式实现的接口成员显示为隐式实现,因此它将被发布
您知道我是否可以给Castle DynamicProxy一些选项来强制实现带有显式实现的接口吗?不幸的是,DynamicProx似乎没有任何选项。
ProxyGenerationOptions
或MixinData
类中没有这样的设置,如果您查看代码(从MixinContributor
开始,这导致),您可以看到它只是从接口方法复制名称和属性(可见性等)。只是好奇。。。您知道有其他代理生成器已经实现了这样的功能吗?不,对不起,我不知道还有其他代理生成器,尽管您可能可以使用来构建自己的代理生成器。或者,如果您只需要mixin功能,您可以尝试re-motion,该库默认显式实现mixin接口。(请注意,我是这两个库的原始作者之一。)实际上,另一种选择是将IL-weaving与PostSharp结合使用。最后,如果你想知道这个问答的背景是什么。。。这是因为我在去年开发了一些开源软件:它是一个针对.NET的通用变更跟踪库。我问这个问题是因为一些用户提出了以下问题: