2016-07-26 75 views
2

例如,假设我定义如下界面:城堡DynamicProxy生成的代理可以强制实现成员作为明确的接口实现吗?

public interface IWhatever 
{ 
    string Text { get; set; } 
} 

而且我在一个mixin实现它:

public class WhateverMixin : IWhatever 
{ 
    string IWhatever.Text { get; set; } 
} 

当我建立一些定类的一个代理,整个显式实现的接口成员显示为隐式实现,因此获得已发布

您是否知道是否有一些选项可以让Castle DynamicProxy强制实施具有显式实现的接口?

回答

2

不幸的是,DynamicProx似乎没有任何选项。 ProxyGenerationOptionsMixinData类中没有这样的设置,如果您查看代码(从MixinContributor开始,这会导致MethodGenerator),您可以看到它只是简单地从接口方法中复制名称和属性(可见性等) 。

+0

只是好奇...你知道任何其他代理生成器已经实现了这样的功能吗? –

+0

不,对不起,我不知道任何其他代理生成器,尽管您可以使用[TypePipe](http://typepipe.codeplex.com/)来构建自己的代理生成器。或者,如果您只需要混入功能,则可以尝试重新运动的[重新混合](https://remix.codeplex.com/) - 默认情况下该库明确实现了mixin接口。 (请注意,我是这两个库的原始作者之一)。 –

+0

呃,实际上另一种选择是使用IL编织和PostSharp。在这一天结束时,如果你想知道这个Q&A的后遗症是什么......这是因为我去年一直在开发的一些开源代码:http://matiasfidemraizer.com/trackerdog –

相关问题