2011-02-01 70 views

回答

4

我認爲你在尋找什麼叫做面向方面編程。有很多C#庫可以幫助解決這個問題。其中一個名爲PostSharp(PostSharp的免費版本支持此功能)。這裏是一個類似於駝鹿示例的例子。這將創建您可以在其他方法使用跟蹤屬性就這一額外功能的策略:

[Serializable] 
public class TraceAttribute : OnMethodBoundaryAspect 
{ 

    public override void OnEntry(MethodExecutionArgs args) 
    { 
     Trace.WriteLine("about to call method"); 
    } 

    public override void OnExit(MethodExecutionArgs args) 
    { 
     Trace.WriteLine("just finished calling method"); 
    } 
} 

你將它添加到方法「富」通過將跟蹤前右它的屬性:

[Trace] 
public void Foo() { /* ... */ } 

現在,當Foo執行時,上面的OnEntry方法將在它之前運行,並且OnExit將在其後運行。

+0

我可以修改參數,因爲它們傳遞給函數?我看到我收到了他們,但我無法從文檔中看出我是否可以改變它們。 – rpkelly 2011-02-02 05:57:43

0

不,不是它在穆斯完成的方式。你可能想看看一些AOP庫。