首页 > 其他分享 >盘点5个常用的.Net依赖注入框架!

盘点5个常用的.Net依赖注入框架!

时间:2024-12-26 11:31:06浏览次数:2  
标签:容器 依赖 container 框架 builder 盘点 var Net com

盘点5个常用的依赖注入框架,特别是前面2个。

1、Microsoft.Extensions.DependencyInjection

这是.Net Core框架本身内置集成的,我们只需引入Microsoft.Extensions.DependencyInjection,就可以直接使用。

using DependencyInjectionSample.Interfaces;
using DependencyInjectionSample.Services;

var builder = WebApplication.CreateBuilder();

builder.Services.AddRazorPages();

builder.Services.AddScoped<IMyDependency, MyDependency>();

var app = builder.Build();

2、AutoFac

https://github.com/autofac/Autofac

Star: 4.4K

一个高级的依赖注入(DI)框架,用于.NET应用程序。它允许开发者以一种类型安全、声明式的方式编写代码,从而实现控制反转(IoC)。Autofac旨在提供强大的功能,同时保持易用性和灵活性。

var builder = WebApplication.CreateBuilder();

// 注册组件
builder.RegisterType<MyService>().As<IMyService>();
builder.RegisterType<AnotherService>().As<IAnotherService>().InstancePerLifetimeScope();

// 构建容器
var app= builder.Build();

// 解析服务
var myService = app.Resolve<IMyService>();

3、Ninject

https://github.com/ninject/Ninject

Star: 2.7K

一个为 .NET 应用程序设计的闪电般快速、超轻量级的依赖注入器。它帮助你将应用程序分割成一系列松耦合、高内聚的组件,然后以灵活的方式将它们重新组合在一起。通过使用 Ninject 来支持你的软件架构,你的代码将变得更容易编写、重用、测试和修改。

public class WarriorModule : NinjectModule
{
    public override void Load() 
    {
        this.Bind<IWeapon>().To<Sword>();
    }
}

4、SimpleInjector

https://github.com/simpleinjector/SimpleInjector

Star: 1.2K

一个为.NET开发者设计的高效、灵活且用户友好的依赖注入库,它不仅简化了复杂的API,提供了精选的功能集,还通过其独特的装饰器注册和容器验证功能,帮助开发者遵循最佳实践,轻松构建可维护的应用程序,成为区分于其他DI容器的首选。

// 1. 创建容器
var container = new Container();

// 2. 配置容器(注册服务)
container.Register<IUserRepository, SqlUserRepository>(Lifestyle.Transient);
container.Register<ILogger, MailLogger>(Lifestyle.Singleton);   
container.Register<UserController>();

// 3. 验证容器配置:
container.Verify();

// 4. 注册容器为MVC的依赖解析器
DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container));

5、Windsor

https://github.com/castleproject/Windsor

Star: 1.5K

一个功能丰富、成熟稳定的控制反转(IoC)容器框架,专为 .NET 平台设计,旨在简化依赖注入并支持高度可配置的组件管理。

// 创建容器
var container = new WindsorContainer();

// 添加和配置组件
container.Install(FromAssembly.This());

// 解析并配置根组件及其所有依赖项
var king = container.Resolve<IKing>();
king.RuleTheCastle();

// 清理容器,应用程序退出
container.Dispose();

- End -

更多开源项目: https://github.com/bianchenglequ/NetCodeTop

标签:容器,依赖,container,框架,builder,盘点,var,Net,com
From: https://www.cnblogs.com/chingho/p/18632352

相关文章

  • SpringCloud+Nacos+ElementPlus后台开发框架 | 小蚂蚁云
     项目介绍基于SpringCloud、SpringSecurity、OAuth2、Nacos、Seata、MybatisPlus、Vue3、TypeScript、ElementPlus、MySQL等技术栈实现的单体前后端分离后台管理系统;后端基于Java语言采用SpringCloud、SpringBoot3、SpringSecurity、OAuth2、Nacos、Seata、MybatisPlus、MySQ......
  • SpringCloud+Nacos+ElementPlus敏捷开发框架 | 小蚂蚁云
     项目介绍基于SpringCloud、SpringSecurity、OAuth2、Nacos、Seata、MybatisPlus、Vue3、TypeScript、ElementPlus、MySQL等技术栈实现的单体前后端分离后台管理系统;后端基于Java语言采用SpringCloud、SpringBoot3、SpringSecurity、OAuth2、Nacos、Seata、MybatisPlus、MySQ......
  • SpringCloud+Nacos+ElementPlus快速开发框架 | 小蚂蚁云
     项目介绍基于SpringCloud、SpringSecurity、OAuth2、Nacos、Seata、MybatisPlus、Vue3、TypeScript、ElementPlus、MySQL等技术栈实现的单体前后端分离后台管理系统;后端基于Java语言采用SpringCloud、SpringBoot3、SpringSecurity、OAuth2、Nacos、Seata、MybatisPlus、MySQ......
  • Pytorch知识框架梳理
    在学习和掌握PyTorch的过程中,理解其框架结构和各个模块之间的关系非常重要。下面我将帮助你梳理一个PyTorch知识框架图,并详细讲解其中的重点内容。PyTorch知识框架图基础组件Tensor:PyTorch的基本数据结构,相当于NumPy中的ndarray,可以在CPU和GPU上进行计算。Autograd(自......
  • SPAR:融合自对弈与树搜索的高性能指令优化框架
    大语言模型的指令遵循能力需要模型能够准确识别指令中的细微要求,并在输出中精确体现这些要求。现有方法通常采用偏好学习进行优化,在创建偏好对时直接从模型中采样多个独立响应。但是这种方法可能会引入与指令精确遵循无关的内容变化(例如,同一语义的不同表达方式),这干扰了模型学习识......
  • 释放你的想象!支持25种复杂编辑类型!浙大等提出AnyEdit:统一高质量图像编辑框架
    文章链接:https://arxiv.org/pdf/2411.15738项目链接:https://dcd-anyedit.github.io/亮点直击从全新的视角系统地对各种编辑指令进行分类,并创新性地引入了一个统一的编辑框架,该框架利用自适应编辑pipeline自动收集不同场景下的多样化高质量编辑数据,从而以可扩展的方式进......
  • LangGraph:基于图结构的大模型智能体开发框架
    LangGraph是LangChainAI开发的一个工具库,用于创建代理和多代理智能体工作流。它提供了以下核心优势:周期、可控性和持久性,对于Agent智能体开发者来说无疑减少了许多工作量。以下篇幅仅从本人角度阐述LangGraph在开发过程中的亮点以及使用方法。基本介绍LangGraph的StateGraph是......
  • 避坑指南:可能会导致.NET内存泄露的8种行为
    任何有经验的.NET开发人员都知道,即使.NET应用程序具有垃圾回收器,内存泄漏始终会发生。并不是说垃圾回收器有bug,而是我们有多种方法可以(轻松地)导致托管语言的内存泄漏。内存泄漏是一个偷偷摸摸的坏家伙。很长时间以来,它们很容易被忽视,而它们也会慢慢破坏应用程序。随着内存泄漏,你......
  • 3款.NET开源、功能强大的通讯调试工具,效率提升利器!
    前言今天大姚给大家分享3款.NET开源、功能强大的通讯调试工具,帮助大家提高通讯调试的效率和准确性。LLCOMLLCOM是一个.NET开源的、功能强大的串口调试工具。支持Lua自动化处理、串口调试、串口监听、串口曲线、TCP测试、MQTT测试、编码转换、乱码恢复等功能。项目开源地址:htt......
  • Transformers 框架 Pipeline 任务详解(六):填充蒙版(fill-mask)
    在自然语言处理(NLP)领域,填空或填补句子中的缺失部分是一项重要的任务。它不仅考验了模型对语言的理解能力,还展示了其生成合理且语义连贯的文本的能力。HuggingFace的Transformers框架通过其PipelineAPI提供了强大的fill-mask功能,允许开发者和研究者轻松构建并应用这种填空技......