使用方法属性来消除冗余代码

时间:2009-11-07 16:51:10

标签: c# .net attributes

我有以下方法将行打印到控制台。

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

我有一些这些方法,他们都做同样的事情(即尝试{“Hello”; Something;} finally {“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");
}

如果我可以简单地添加一个方法属性来帮助我消除冗余(即尝试{“Hello”; Something;} finally {“Bye。”}),那将是很棒的。在C#中是否可以创建这样的属性?

2 个答案:

答案 0 :(得分:4)

您应该查看AOP技术,特别是PostSharp

答案 1 :(得分:1)

投票:

“CompileTimeAttribute在编译时注入代码” https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=93682