2

WindsorContainerを持っています。

にInterceptor属性を持つILazyComponentLoader(重要な場合)とインターフェイス( )があります。ISomething

[Interceptor(typeof(DynamicImplementationInterceptor)]
public interface ISomething

ProxyGenerator.CreateInterfaceProxyWithoutTargetを介してインターフェイスを解決するときにWindsorを使用して、すべての動作をオンデマンドで外部に実装できるcontainer.Resolve<ISomething>()ようにします。DynamicImplementationInterceptor

ドキュメントでこの正確なシナリオを見つけることができないようです...ISomethingを使用して登録する場合Component.For<ISomething>()....、この動作が必要であることをどのように指定しますか?(現在、タイプが抽象またはインターフェイスであるというエラーが発生するため、インスタンス化できません...)

ありがとう!

4

1 に答える 1

2

コンポーネントをインターセプターに登録し、実装を行わない場合、Windsorは自動的にターゲットを省略します。例:

var container = new WindsorContainer();
container.Register(Component.For<DynamicImplementationInterceptor>());
container.Register(Component.For<ISomething>()
    .Interceptors(InterceptorReference.ForType<DynamicImplementationInterceptor>()).First);

インターセプター属性は必要ありません

于 2010-10-09T22:00:48.790 に答える