我有以下打印行到控制檯的方法。使用方法屬性來消除多餘的代碼
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#中可以創建這樣的屬性嗎?
不能確定你想完成什麼「CompileTimeAttribute在編譯時注入代碼」。屬性應該修飾代碼,而不是生成代碼,否則就不太清楚代碼在做什麼。我會簡單地嘗試子類。 – Wilhelm 2009-11-07 17:00:30
我想說,你現在使用的方法非常清晰地表達了代碼的目標,同時提供了你正在尋找的功能,而使用屬性編寫它是令人困惑的。 – qid 2009-11-08 04:31:16