1
IInterceptorでメソッドを取得し、関連するコンポーネントのインスタンスが解決されるとすぐに呼び出される方法はありますか? IOnBehalfAwareのようなものですが、ComponentModelではなく実際のコンポーネントインスタンスで呼び出されるようになっています。コンポーネントインスタンスでCastle Interceptorを呼び出す
IInterceptorでメソッドを取得し、関連するコンポーネントのインスタンスが解決されるとすぐに呼び出される方法はありますか? IOnBehalfAwareのようなものですが、ComponentModelではなく実際のコンポーネントインスタンスで呼び出されるようになっています。コンポーネントインスタンスでCastle Interceptorを呼び出す
...インターフェイスを定義し、このようなことをやってしまったというのが私のIInterceptor
(複数可)を実装:コンポーネント(複数可)を登録するときに、次に
public interface IInstanceAware
{
void Execute(object instance);
}
を正確にあなたが何をすべきか
registration.OnCreate((kernel, instance) =>
{
var accessor = instance as IProxyTargetAccessor;
foreach(var instanceAware in accessor.GetInterceptors().OfType<IInstanceAware>())
{
accessor.Execute(instance);
}
};
を行いますやりたい、なぜ? –
私は、インターセプトされたコンポーネントのメンバー(プロパティ)にいくつかの属性を持っています。インターセプタにコンポーネントを反映させ、解決したらすぐにロジックを適用し、結果を保存するようにします。通常のOnCreateデリゲートを使用することはできません。なぜなら、同じIInterceptorインスタンスが、メソッドコールを傍受するときにそのデータを後で必要とするからです。 – Jeff