4

Microsoft Unity 2.0 を使用していますが、傍受拡張機能が期待どおりに機能しません。

次の 2 行のコードを検討してください。

MyUnityContainer.Configure<Interception>().SetDefaultInterceptorFor<MyType>(new VirtualMethodInterceptor());
var someObject = MyUnityContainer.BuildUp<MyType>(anObject);

これらの 2 行では、someObject に期待する動的プロキシが得られません! このようなシナリオで傍受を機能させるにはどうすればよいでしょうか?

4

2 に答える 2

4

このページBuildUpでは、オブジェクトの作成時にのみ適用できるため (ターゲット オブジェクトのサブクラスが動的に生成されるため)、仮想傍受を使用できないことを説明しています。

インターセプトは仮想メソッドでのみ発生します。オブジェクトの作成時にインターセプトを設定する必要があり、既存のオブジェクトをインターセプトすることはできません。

于 2010-08-26T12:16:31.677 に答える
0

VirtualMethodInterceptorは、新しいオブジェクトでのみ機能します。代わりに、InterfaceまたはTransparentProxyインターセプターを使用して、既存のインスタンスをインターセプトできます(これらは明示的なプロキシオブジェクトを使用するため)。

VirtualMethodProxyInterceptorを追加する可能性はありますが、ヘルプよりも混乱が生じると思います。

于 2010-08-26T17:31:59.727 に答える