Loading

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

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

posted @ 2024-12-14 17:46  J.晒太阳的猫  阅读(13)  评论(0编辑  收藏  举报