2012-01-05 98 views
1

在解決相關組件的任何實例後,是否有任何簡單的方法可以在我的IInterceptor上獲取方法?有點像IOnBehalfAware,但這樣它會被實際的組件實例調用,而不是ComponentModel。在組件實例上調用城堡攔截器

+0

究竟你想做什麼,爲什麼? – 2012-01-05 11:00:57

+0

我對截取的組件的成員(屬性)有一些屬性。我希望我的攔截器能夠反映我的組件,並在解決問題後立即應用一些邏輯,然後存儲結果。我不能使用常規的OnCreate委託,因爲相同的IInterceptor實例在它攔截方法調用時稍後需要該數據。 – Jeff 2012-01-05 15:37:02

回答

0

結束了做這樣的事情...定義一個接口,我IInterceptor(S)執行:

public interface IInstanceAware 
{ 
    void Execute(object instance); 
} 

然後註冊組件(S)時,做

registration.OnCreate((kernel, instance) => 
{ 
    var accessor = instance as IProxyTargetAccessor; 
    foreach(var instanceAware in accessor.GetInterceptors().OfType<IInstanceAware>()) 
    { 
     accessor.Execute(instance); 
    } 
};