如何使用CodeDOM / T4 / PostSharp /其他用c#自动创建(例如)单例?

前端之家收集整理的这篇文章主要介绍了如何使用CodeDOM / T4 / PostSharp /其他用c#自动创建(例如)单例?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在寻找一种自动生成(例如)单身的方法,例如:
[SingletonPatternAttribute]
public class Logger {
    public void Log (string txt) { /* do logging... */ }
}

作为消除样板的尝试.

有人知道如何实现吗?我知道有CodeDOM,Reflection.Emit,T4等.此外 – 有(最值得注意的)PostSharp,但我很高兴看到上述挑战的真正解决方案.

例如,我可以在构造函数中执行代码生成,但编译时间显然要好得多.

编辑:

这里的问题不是Singleton,而是C#中的生成/元编程 – 如何以最佳方式创建代码/消除样板 – 有什么样的具体例子?

解决方法

我为我的日志记录类做了这件事,使用IOC容器并在映射/绑定对象时添加范围.例如,使用Ninject,绑定将是:
Bind<ILogger>().To<Logger>().InSingletonScope();

然后在我想要使用我的单例记录器的类中,我可以使用属性注入:

[Inject]
public ILogger Logger { get; set; }

猜你在找的C#相关文章