[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; }总结
以上是内存溢出为你收集整理的如何使用CodeDOM / T4 / PostSharp /其他用c#自动创建(例如)单例?全部内容,希望文章能够帮你解决如何使用CodeDOM / T4 / PostSharp /其他用c#自动创建(例如)单例?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)