Tar*_*Tar 5 c# design-patterns metaprogramming boilerplate
我正在寻找一种自动生成(例如)的方法singleton
,如:
[SingletonPatternAttribute]
public class Logger {
public void Log (string txt) { /* do logging... */ }
}
Run Code Online (Sandbox Code Playgroud)
作为消除样板的尝试.
有人知道如何实现吗?我知道有CodeDOM
,Reflection.Emit
,T4
等.此外 - (最值得注意的是)PostSharp
,但我很高兴看到上述挑战的真正解决方案.
例如,我可以在构造函数中执行代码生成,但编译时间显然要好得多.
这里的问题不是Singleton
,而是生成/元编程C#
- 如何以最佳方式创建代码/消除样板 - 有什么样的具体例子?
我为我的日志记录类做了同样的事情,使用 IOC 容器并在映射/绑定对象时添加范围。例如使用 Ninject,绑定将是:
Bind<ILogger>().To<Logger>().InSingletonScope();
Run Code Online (Sandbox Code Playgroud)
然后在我想使用单例记录器的类中,我可以使用属性注入:
[Inject]
public ILogger Logger { get; set; }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
414 次 |
最近记录: |