2016-07-26 55 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 –

相關問題