使用分部属性和代码生成器完成依赖自动注入

对于使用 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

具体实现和使用方法,可以看源码:

JasonGrass/Jgrass.DIHelper

NuGet Gallery | Jgrass.DIHelper 1.0.0

非常小的项目(不需要使用 Autofac),可以用这个库帮忙偷个懒,少写一点点代码。

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=7qgy37e7ppt

作者:JasonGrass

出处:https://www.cnblogs.com/jasongrass/p/18606979

版权:本作品采用「署名 4.0 国际」许可协议进行许可。

posted @   J.晒太阳的猫  阅读(55)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2019-12-14 Fiddler 插件开发,使用 WPF 作为 UI 控件
more_horiz
keyboard_arrow_up light_mode palette
选择主题
点击右上角即可分享
微信分享提示