2010-10-29 35 views
0

您好我想這樣的情況下,內代理方法:訪問代理的類

public class MyService { 

     private IList<Entity> data; 

     public virtual IList<Entity> GetData() 
     { 
      return data; 
     }   

     public virtual IList<Entity> GetDataAdvanced() 
     { 
      return GetData(); 
     } 
    } 

考慮以下情況,當我有這個類的代理(例如日誌記錄攔截器)。問題是:用GetData()方法會GetDataAdvanced()使用:代理的還是正常的?經過測試,我看起來好像沒有使用代理服務器。我想知道是否有可能改變這種行爲?

感謝您的幫助。

庫巴

回答

1

這要看。當您使用ProxyGenerator.CreateClassProxy()ProxyGenerator.CreateInterfaceProxyWithoutTarget()時,代理將是您的原始類的子類,它被實例化,然後,是的,GetData()實際上將調用代理。

不過,若你正在使用ProxyGenerator.CreateInterfaceProxyWithTarget()和你提供你自己的MyService情況下,代理是隻能從外面和內部呼叫像GetData()調用不會通過代理去的包裝。

+0

thx - 很好的知道,還有一件事 - 有沒有什麼方法可以指定在使用windsor容器註冊組件時使用什麼代理生成策略(不帶或不帶目標)? – user483071 2010-10-29 06:58:20

+0

對不起,沒有溫莎的經驗。 – 2010-10-29 07:04:22