1

Castle Windsor を使用して解決しようとしている WCF サービスがあります。以前の登録は次のようになっていました。

container.Register(Component.For<IBatchDataService>()
.AsWcfClient(WCFEndpoint
.FromConfiguration("Internal.IBatchDataService"))
.LifestyeTransient())

これで、進行中のプロキシが作成されました。同じインターフェイス (IBatchDataService) を公開し、WCF サービスへの参照をコンストラクター引数として受け取ります。他のクラスはプロキシ クラスを使用するように解決されますが、プロキシ クラスは WCF サービスに解決されるように、Windsor でこれを設定するにはどうすればよいですか。私は今これを持っています:

container.Register(Component.For<IBatchDataService>()
.ImplementedBy<BatchDataServiceClient>());

これにより、新しいプロキシ クラスが解決されます。

4

2 に答える 2

1

これを試して:

container.Register(
    Component.For<IBatchDataService>().AsWcfClient(WCFEndpoint.FromConfiguration("Internal.IBatchDataService")).LifestyeTransient().Named("wcfBatchDataService"),
    Component.For<IBatchDataService>().ImplementedBy<BatchDataServiceClient>().AsDefault().DependsOn(
        Dependency.OnComponent("constructorParameterName", "wcfBatchDataService")
)

ここで、constructorParameterName は、コンストラクターの IBatchDataService パラメーターの名前です。コンパイラで実行していないので、これがうまくいくかどうか教えてください。

よろしく、マルウェイン。

于 2013-03-21T07:28:13.283 に答える
0

これは単純なデコレータ パターンです。Windsor サポートの OOTB:

container.Register(
    Component.For<IBatchDataService>().
        ImplementedBy<BatchDataServiceClient>(),
    Component.For<IBatchDataService().
        AsWcfClient(WCFEndpoint.FromConfiguration("Internal.IBatchDataService")).
        LifestyleTransient());
于 2013-03-21T13:26:28.333 に答える