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

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

时间:2024-05-08 21:11:07浏览次数:24  
标签:容器 依赖 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/AutofacStar: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/NinjectStar: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 -分享一套.NetCore从入门到精通视频教程
点击下方公众号卡片,关注我

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

相关文章

  • 盘点13个值得程序员逛的论坛
     1、AlloyteamWeb导航网站这是腾讯Alloyteam团队的导航网站,主要是针对前端的资源网站。此网站收集的类目很齐全,包含框架、社区、门户、设计资源、大牛公众号、大牛个人网站、热门书籍、构建工具、字体样式等等。网址:http://www.alloyteam.com/nav/2、Tooool程序员导......
  • Seal-Report是一个基于.NET框架的开源报表项目
    01项目简介Seal-Report是一个基于.NET框架的开源项目,提供了简单、直观的报表和报告功能,具有报表设计器,可减少复杂的配置,无需编程知识也可以使用。采用该项目,就可以为企业快速提供高质量的报表,从而提升工作效率和决策速度。 https://github.com/ariacom/Seal-Report02项目功......
  • 2022年最新的Asp.Net程序员学习路线图
    给大家分享一个微软MVP整理的,2022年最新的Asp.Net程序员学习路线图。这个图的知识点,分为:1、个人必须掌握2、进一步学习3、兴趣4、其他5、可能需要学习。第1、2部分大家必须去掌握起来,其他的内容可以根据工作的需要、兴趣选择。 在Github已经针有人对路线图的每一个知识点......
  • ExcelDataReader:一个.Net高性能Excel开源读取器
    ExcelDataReader:一个.Net高性能Excel开源读取器来自:编程乐趣推荐一个用于读取MicrosoftExcel文件的高性能开源库。 01项目简介ExcelDataReader是一个功能强大且易于使用的开源项目,提供了丰富的读取API,专门读取Excel文件的数据,特别是处理大数据量的情况。ExcelDataReader......
  • 深度学习框架火焰图pprof和CUDA Nsys配置指南
    注:如下是在做深度学习框架开发时,用到的火焰图pprof和CUDANsys配置指南,可能对大家有一些帮助,就此分享。一些是基于飞桨的Docker镜像配置的。一、环境&工具配置0.开发机配置#1.构建镜像,记得映射端口,可以多映射几个;记得挂载ssd目录,因为数据都在ssd盘上nvidia-dockerr......
  • websocket-sharp:.NET平台上的WebSocket客户端与服务器开源库
    1.简介:websocket-sharp提供WebSocket客户端和服务器库,基于C#开发的,并遵循WebSocket协议规范,使得开发人员能够轻松地在.NET应用程序中实现WebSocket通信。https://github.com/sta/websocket-sharpwebsocket-sharp特色功能有:1、简洁易用的API:提供清晰且直观的API接......
  • .Net开源项目推荐:12 篇热文汇总
    今天盘点下4月份分享的12篇热文,其中包含10个开源项目、2个VisualStudio插件(点击标题查看详情)。1、ImageSharp:高性能跨平台.NET开源图形库一款完全托管的代码库,高性能、跨平台的图形库。它支持在任何支持.NET6+的环境中安装和使用,可以运用在各种场景:设备端,云端以及嵌入式和物......
  • CentOS 7 部署 NET6.0 项目过程
    1、环境配置NET6.0环境搭建主要是SDK和runtime的安装,下图截自官网说明了SDK和runtime的关系   CentOS7安装SDK方法第一步:rpm-Uvhhttps://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm第二部:yuminstalldotnet-sd......
  • 批量修改asp.net core 项目的解决方案的命名空间
    单个命名空间重命名:打开任何使用旧命名空间(例如:“OrchardCore”)的文件。右键点击命名空间名称,选择“重构”然后选择“重命名”。输入新的命名空间名称(例如:“SuperCore”),确保选中“预览更改”,然后点击“应用”。VisualStudio将显示所有受影响的引用,并让你确认修改。全局搜索......
  • C++基础-如何引入第三方静态库、动态库或自定义库 摘自 https://blog.csdn.net/u01310
    C++无论是内置库还是第三方库,都需要自己手动进行查找、配置、引入等工作。本文即是帮助完成C++项目对于库、框架如何完成依赖引入达成可调用的目的,重点讲述开发工具VisualStudio中的操作静态库(.lib)静态库引入适用用于大部分无开源的第三方库,开发者不需要关心库的具体实现如何,......