Ken*_*Ken 5 c# decorator static-members
我正在使用log4net,我们的代码中有很多这样的东西:
public class Foo {
private static readonly ILog log = LogManager.GetLogger(typeof(Foo));
....
}
Run Code Online (Sandbox Code Playgroud)
一个缺点是,这意味着我们将这个10字的部分粘贴在一起,并且偶尔会有人忘记更改类名.该log4net的常见问题也提到了这个另一种可能性,这更加详细:
public class Foo {
private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
...
}
Run Code Online (Sandbox Code Playgroud)
是否可以编写装饰器来定义它?我真的想简单地说:
[LogMe] // or perhaps: [LogMe("log")]
public class Foo {
...
}
Run Code Online (Sandbox Code Playgroud)
我在其他语言中做过类似的事情,但从来没有像C#这样的静态编译语言.我可以从装饰器定义类成员吗?
编辑:嘿.我是Lisp程序员.我很欣赏切换语言的建议,但实际上,如果我要切换语言以获得更好的元编程功能,我会一直到Lisp,而不是半途而废.不幸的是,使用不同的语言不是这个项目的选择.
| 归档时间: |
|
| 查看次数: |
1516 次 |
| 最近记录: |