2013-03-20 186 views
0

我努力學習面向方面編程的概念,我使用城堡項目動態代理爲。請參閱我寫的示例代碼。攔截器攔截不C#,城堡動態代理

攔截器似乎沒有攔截?或者我沒有在我的控制檯窗口中看到「在調用之前的內部攔截器,」和「內部攔截器,在調用之後」。請建議我在這裏做錯了什麼?

class AOP 
{ 
    static void Main(string[] args) 
    { 
     ProxyGenerator generator = new ProxyGenerator(); 
     actual logger = generator.CreateClassProxy<actual>(new proxyforactual()); 
     logger.add(3, 2); 
    } 
} 

public class proxyforactual : IInterceptor 
{ 
    public void Intercept(IInvocation invocation) 
    { 
     Console.WriteLine("Inside interceptor, before the call"); 

     invocation.Proceed(); 

     Console.WriteLine("Inside interceptor, after the call"); 
    } 
} 


public class actual 
{ 
    public int add(int x, int y) 
    { 
     Console.WriteLine("Inside method"); 

     return x + y; 
    } 
} 

回答

0

嘗試使用接口並從中派生你的類和代理。

2

我的壞,在「CreateClassProxy」方法的簽名仔細觀察後,我注意到,代理將只截取虛擬方法。改變了我的代碼,如下所示,現在工作正常。

謝謝大家。

public virtual int add(int x, int y) 
    { 
     Console.WriteLine("Inside method"); 

     return x + y; 
    }