2009-11-07 62 views
1

我有以下打印行到控制檯的方法。使用方法屬性來消除多餘的代碼

public void MyMethod() { 
    try { 
     Console.WriteLine("Hello!"); 
     Console.WriteLine("My name is MyMethod"); 
    } 
    finally { 
     Console.WriteLine("Bye."); 
    } 
} 

我有幾個的這些方法,他們都做同樣的事情(即嘗試{「你好」的東西;} {終於「再見。」})。爲了避免冗餘,使我的代碼更清楚,我想出了以下內容:

public void SayHello(Action myName) { 
    try { 
     Console.WriteLine("Hello!"); 
     myName(); 
    } 
    finally { 
     Console.WriteLine("Bye."); 
    } 
} 

public void MyMethod2() { 
    SayHello(() => Console.WriteLine("My name is MyMethod")); 
} 

我喜歡這個技術,但我認爲這可能是即使使用屬性更好。這是我想最終達到什麼:

[SayHello] 
public void MyMethod2() { 
    Console.WriteLine("My name is MyMethod"); 
} 

這將是巨大的,如果我可以簡單地添加一個方法屬性,以幫助我消除冗餘(即嘗試{「你好」的東西;}最後{「再見。 「})。在C#中可以創建這樣的屬性嗎?

+0

不能確定你想完成什麼「CompileTimeAttribute在編譯時注入代碼」。屬性應該修飾代碼,而不是生成代碼,否則就不太清楚代碼在做什麼。我會簡單地嘗試子類。 – Wilhelm 2009-11-07 17:00:30

+0

我想說,你現在使用的方法非常清晰地表達了代碼的目標,同時提供了你正在尋找的功能,而使用屬性編寫它是令人困惑的。 – qid 2009-11-08 04:31:16

回答