如何使用CodeDOMT4PostSharp 其他用c#自动创建(例如)单例?

如何使用CodeDOMT4PostSharp 其他用c#自动创建(例如)单例?,第1张

概述我正在寻找一种自动生成(例如)单身的方法,例如: [SingletonPatternAttribute]public class Logger { public void Log (string txt) { /* do logging... */ }} 作为消除样板的尝试. 有人知道如何实现吗?我知道有CodeDOM,Reflection.Emit,T4等.此外 – 有(最值得注意的 我正在寻找一种自动生成(例如)单身的方法,例如:
[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#自动创建(例如)单例?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1252545.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存