Pure.DI 开源项目教程

Pure.DI 开源项目教程

Pure.DI Pure DI for .NET without frameworks! Pure.DI 项目地址: https://gitcode.com/gh_mirrors/pu/Pure.DI

1. 项目介绍

Pure.DI 是一个针对 .NET 的编译时依赖注入(DI)代码生成器。它支持从 .NET Framework 2.0 开始的所有版本。Pure.DI 通过生成简洁高效的依赖注入逻辑代码,避免了传统 DI 框架中的反射和动态实例化,从而消除了运行时性能开销。

主要特点包括:

  • 零开销:生成的代码与手动实现几乎无异,保证了性能。
  • 编译时验证:在编译阶段检测依赖关系问题,确保程序的稳定性和可靠性。
  • 跨平台兼容性:不依赖运行时,保证了在所有支持的平台上的行为一致性。
  • 熟悉的语法:API 设计与主流的 IoC/DI 框架相似,易于上手。
  • 精确的泛型支持:推荐使用专用标记类型,提高对象图的构建精度。
  • 透明度:可以查看和调试生成的代码,便于测试和调试。
  • 内置 BCL 支持:原生支持多种 Base Class Library 类型。

2. 项目快速启动

首先,确保你的项目满足以下要求:

  • .NET SDK 6.0.4 或更高版本。
  • C# 8 或更高版本(仅针对使用 Pure.DI 源生成器的项目)。

安装 Pure.DI

在项目的根目录中运行以下命令来安装 Pure.DI NuGet 包:

dotnet add package Pure.DI

配置依赖注入

接下来,配置你的项目以使用 Pure.DI 进行依赖注入。

在项目文件中,添加以下代码以设置依赖注入:

DI.Setup(nameof(Composition));

// 绑定 Random 为单例
DI.Bind<Random>().AsSingleton().To(() => new Random());

// 绑定 ShroedingersCat 为单例
DI.Bind<ShroedingersCat>().To(() => new ShroedingersCat(new Lazy<State>(() => State Alive or Dead)));

// 绑定 CardboardBox 为泛型实现
DI.Bind<IBox<T>>().To<CardboardBox<T>>();

// 设置应用的根
DI.Root<Program>("Root");

创建对象图

创建一个包含 Main 方法的 Program 类,并使用 Pure.DI 的 Root 属性来获取对象图:

class Program
{
    static void Main(string[] args)
    {
        var composition = DI.Root<Program>("Root");
        // 使用 composition 中的对象
    }
}

3. 应用案例和最佳实践

复杂依赖处理

Pure.DI 能够处理复杂的依赖关系。例如,如果有多个服务依赖于一个配置服务,你可以这样绑定:

DI.Bind<IConfigService>().To<ConfigService>();
DI.Bind<OtherService>().To<OtherService>();
DI.Bind<YetAnotherService>().To<YetAnotherService>();

高性能应用

在性能敏感的应用中,使用 Pure.DI 可以减少内存消耗和准备开销。例如,对于需要频繁创建和销毁的对象,可以使用以下方式:

DI.Bind<MyService>().As Transient().To<MyService>();

4. 典型生态项目

Pure.DI 可以与多种生态项目配合使用,例如:

  • Pure.DI.MS:与 Microsoft DI 集成。
  • Pure.DI.Templates:用于从命令行创建项目的模板包。

这些项目扩展了 Pure.DI 的功能,使其能够更好地适应不同的开发需求。

Pure.DI Pure DI for .NET without frameworks! Pure.DI 项目地址: https://gitcode.com/gh_mirrors/pu/Pure.DI

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孙爽知Kody

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值