使用分部属性和代码生成器完成依赖自动注入
对于使用 IOC 管理的服务,通常会对构造函数中的依赖完成自动的依赖注入,但对于属性就需要额外处理了。
比如,可以使用 Autofac
这个成熟的框架。
本文是一个利用 SourceGenerator 和 partial property 特性,完成属性依赖注入的一个案例。
如果说相比 Autofac
等有什么优势的话,就是本文的方式,不要求被注入的类被 IOC 管理,因为本质上只是帮你简单偷懒了一下。
以前的写法
class MyClass
{
public IMyService MyService => App.GetService<IMyService>();
}
现在的写法
partial class MyClass
{
[Autowired]
public partial IMyService MyService { get; }
}
就这么一点东西,甚至偷懒都不多,因为要声明 partial
。
具体实现和使用方法,可以看源码:
NuGet Gallery | Jgrass.DIHelper 1.0.0
非常小的项目(不需要使用 Autofac
),可以用这个库帮忙偷个懒,少写一点点代码。
我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=7qgy37e7ppt
作者:
J.晒太阳的猫
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2019-12-14 Fiddler 插件开发,使用 WPF 作为 UI 控件