盘点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

盘点5个常用的.Net依赖注入框架!的更多相关文章

  1. Spring.NET依赖注入框架学习--简单对象注入

    Spring.NET依赖注入框架学习--简单对象注入 在前面的俩篇中讲解了依赖注入的概念以及Spring.NET框架的核心模块介绍,今天就要看看怎么来使用Spring.NET实现一个简单的对象注入 常 ...

  2. Spring.NET依赖注入框架学习--入门

    Spring.NET依赖注入框架学习--入门 在学些Spring.net框架之前,有必要先脑补一点知识,比如什么是依赖注入?IOC又是什么?控制反转又是什么意思?它们与Spring.net又有什么关系 ...

  3. 史上最好用的依赖注入框架Google Guice【转】

    Guice是Google开发的一个轻量级,基于Java5(主要运用泛型与注释特性)的依赖注入框架(IOC).Guice非常小而且快. (其他的依赖注入框架还有Dagger,Spring) Spring ...

  4. ASP.NET Core技术研究-探秘依赖注入框架

    ASP.NET Core在底层内置了一个依赖注入框架,通过依赖注入的方式注册服务.提供服务.依赖注入不仅服务于ASP.NET Core自身,同时也是应用程序的服务提供者. 毫不夸张的说,ASP.NET ...

  5. 简单谈谈Hilt——依赖注入框架

    今天继续Jetpack专题,相信不少的朋友都使用过Dagger,也放弃过Dagger,因为实在太难用了.所以官方也是为了让我们更好使用依赖注入框架,为我们封装了一个新的框架--Hilt,今天一起来看看 ...

  6. [Android]依赖注入框架google的dagger

    分享一下Android依赖注入框架--Google升级版Dagger2框架 Google的Dagger2是对上一版squareup的Dagger改版,话不多说直接上项目代码. Dagger2源码 Da ...

  7. [Android]依赖注入框架squareup的dagger

    分享一下Android依赖注入框架--Dagger使用 Dagger源码 Dagger1-Demo 希望能给大家的开发带来帮助.

  8. Android Dagger依赖注入框架浅析

    今天接触了Dagger这套android的依赖注入框架(DI框架).感觉跟Spring 的IOC差点儿相同吧.这个框架它的优点是它没有採用反射技术(Spring是用反射的),而是用预编译技术.因为基于 ...

  9. 依赖注入及AOP简述(四)——“好莱坞原则”和依赖注入框架简介 .

    3.2.    “好莱坞原则” 看了前面关于依赖注入概念的描述,我们来提炼出依赖注入的核心思想.如果说传统的组件间耦合方式,例如new.工厂模式等,是一种由开发者主动去构建依赖对象的话,那么依赖注入模 ...

  10. Ninject是一款.Net平台下的开源依赖注入框架

    Ninject是一款.Net平台下的开源依赖注入框架.按照官方说法,它快如闪电.超级轻量,且充分利用了.Net的最新语法,使用Lambda表达式代替Xml文件完成类型绑定.Ninject结构精巧,功能 ...

随机推荐

  1. nestjs 中管道的使用-验证DTO

    1. 安装管道 nest g pi role 意思是安装一个role模块的管道 2. 在controller中使用管道 管道的作用: 1. 数据的转换 2. DTO规则验证 一般使用全局配置管道 区别 ...

  2. python中的内置函数zip函数

    关于zip()函数,有几点要讲的. 首先,官方文档中,它是这样描述的: Make an iterator that aggregates elements from each of the itera ...

  3. KubeSphere 社区双周报 | Fluent Operator 发布 v2.5.0 | 2023.09.01-09.14

    KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...

  4. CentOS7.4 安装 11204 ASM GI 组件时:ohasd failed to start

    前段时间某客户要求在CENTOS7上部署Oracle 11.2.0.4 single instance && ASM存储,遇到一个比较头疼的问题,好在已经处理完了. 在图形化执行安装程 ...

  5. Java高并发,ReadWriteLock(读写锁)

    并发读写的时候,很容易造成数据不一致的状态 上案例,代码如下: public class ReadWriteLockDemo { public static void main(String[] ar ...

  6. 22.使用Rancher2.0搭建Kubernetes集群

    使用Rancher2.0搭建Kubernetes集群 中文文档:https://docs.rancher.cn/docs/rancher2 安装Rancher2.0 使用下面命令,我们快速的安装 # ...

  7. meta-analysis初学--笔记摘抄

    meta-analysis的定义 Meta-analysis是指对研究的研究,可以翻译为元分析.后设分析.整合分析.荟萃分析等.最常用的翻译是荟萃分析.Meta-analysis是用统计的概念与方法, ...

  8. Spring IOC、DI、AOP原理和实现

    (1)Spring IOC原理   IOC的意思是控件反转也就是由容器控制程序之间的关系,把控件权交给了外部容器,之前的写法,由程序代码直接操控,而现在控制权由应用代码中转到了外部容器,控制权的转移是 ...

  9. 使用Tomcat插件开发WEB应用

    在Eclipse中,可以安装Tomcat插件,实现WEB应用的开发调试工作,Tomcat插件还可以支持WEB应用的热部署. 一.安装配置Tomcat插件 可以通过拷贝安装和Links方式安装Tomca ...

  10. Web实时消息推送的解决方案

    什么是消息推送(push) 推送的场景比较多,比如有人关注我的公众号,这时我就会收到一条推送消息,以此来吸引我点击打开应用. 消息推送(push)通常是指网站的运营工作等人员,通过某种工具对用户当前网 ...