0

私はここにいるので、私の最初の質問は誰とも混乱しないことを願っています。[Castle.DynamicProxy]作成されたプロキシオブジェクトには、元のオブジェクトのプロパティが正しく設定されていません。

私はAOPとIOCを統合するためにCastle WindsorとCastle DynamicProxyを一緒に使用していますので、プロジェクト内のすべてのサービスを傍受してロギングサービス(および監査など)を実装できます。

私は解決済みのインスタンスをプロキシしようとしていますが、これは完了しましたが運がないためです。返されるプロキシは、解決されたインスタンスのプロパティをnullに設定するためです。以下は、参照用のデバッグ情報です(PROBLEMATICプロパティはTimeServiceです)。

the resolved instance before proxied

前にプロキシ解決インスタンス。

the proxied object

プロキシになるオブジェクト

は、私が何かを逃したのか、私は間違った方法で城DynamicProxyを理解したのですか?私は解決策を探したが運がなかった。

すべての回答が高く評価されます。前もって感謝します。

container.Register(
    Component.For<ICalcService>() 
     .Interceptors(InterceptorReference.ForType<ReturnDefaultInterceptor>()).Last, 
    Component.For<ReturnDefaultInterceptor>() 
); 

は、詳細はドキュメントを参照してください:

答えて

1

あなたは、そうでなければ、またコンポーネントとコンテナの寿命を解放周りの他の問題に実行されますWindsorContainer.Resolveをオーバーライドしていない、ウィンザーのビルトインAOPのサポート登録の際に使用する必要がありますhttps://github.com/castleproject/Windsor/blob/master/docs/registering-interceptors-and-proxyoptions.md

+0

答えが非常にありがとうございます。これは私にとってはうまくいきます。もう1つの質問ですが、このソリューションは各コンポーネント(コードまたは設定ファイルのいずれか)のインターセプタ設定が必要なようですが、すべてのthに自動的に適用されるインターセプタ電子コンポーネント? –

+0

@SkyFengコンベンションドリブン登録(Classes.FromAssemblyContaining()など)を使用していない場合は、コンテナをフックします。 ComponentRegisteredおよびComponentModel.Interceptorsに追加します。 –

+0

入手しました。どうもありがとう。 @jonathon-rossi –

関連する問題