2016-07-26 7 views
2

たとえば、のは、次のように私はインターフェイスを定義したとしましょう:Castle DynamicProxyで生成されたプロキシは、明示的なインターフェイス実装としてメンバーを強制的に実装できますか?

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

をそして私はミックスインでそれを実装:

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

私はいくつかの特定のクラスのプロキシを構築し、全体明示的に実装されたインターフェイスメンバが暗黙的に実装されているように見えるため、に公開されます。

明示的な実装でインターフェイスを実装するためにCastle DynamicProxyに与えることができるオプションがあるかどうか知っていますか?

答えて

2

残念ながら、DynamicProxにはこのオプションはありません。 ProxyGenerationOptionsまたはMixinDataクラスにそのような設定はありません。MixinContributorから始まり、MethodGeneratorにつながるコードを調べると、インターフェイスメソッドから名前と属性(可視性など)が単純にコピーされることがわかります。

+0

ちょうど不思議なこと...既にそのような機能を実装している他のプロキシジェネレータは分かりますか? –

+0

いいえ、申し訳ありませんが、他のプロキシジェネレータについてはわかりませんが、[TypePipe](http://typepipe.codeplex.com/)を使用して独自のビルドを構築できます。代わりに、mixin機能が必要な場合は、リモーションの[re-mix](https://remix.codeplex.com/)を試すことができます。このライブラリは、mixinインターフェースをデフォルトで明示的に実装しています。 (私はこれらのライブラリの両方の元の作者の1人であることに注意してください。) –

+0

実際、もう1つの方法は、PostSharpでIL製織を使用することです。最後に、このQ&Aのバックゴールを知りたいのであれば...私は昨年中に開発してきたオープンソースのためです:http://matiasfidemraizer.com/trackerdog –

関連する問題