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

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

时间:2024-12-26 18:32:09浏览次数:5  
标签:容器 container 框架 builder 盘点 https 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

我是编程乐趣,一个.Net开发经验老程序员,欢迎“关注”我,每天为你分享开源项目和编程知识。
也欢迎加入【.Net技术编程交流社区】,和大家共同学习交流!,
点击加入https://bbs.csdn.net/topics/613465368

标签:容器,container,框架,builder,盘点,https,var,Net,com
From: https://blog.csdn.net/daremeself/article/details/144738779

相关文章

  • Gin框架配置ip地址白名单教程
    在Gin框架中实现IP白名单,可以通过中间件的方式检查客户端的IP地址是否在白名单中。如果不在白名单中,返回拒绝访问的响应。以下是实现教程:实现步骤定义IP白名单创建一个列表存储允许访问的IP地址。编写中间件创建一个Gin中间件,用于拦截请求并检查客户端IP......
  • Unity笔记之MVVM框架推荐
    前言:mvvm框架不用不知道,一用发现这玩意还是挺好的,就是第一次的时候比较麻烦。以后维护或者换皮之类的老方便了。[设计思路,还是挺有用的,umvvm](https://www.cnblogs.com/OceanEyes/p/unity3d_framework_designing_get_started_with_mvvm_part1.html#_label3)[良心,还在维护者呢,老......
  • 纯JS加密+时间校验(没引用任何框架),Java解密
    1、JS加密functioncaesarEncrypt(text,shift){ letstr="G7bCk1Xf2A9qLmJ0pVrTz5D4oS6wEhN"+Date.now().toString(); returnstr.split('') .map(char=>String.fromCharCode(char.charCodeAt(0)+3)) .join('');}2、Java校验......
  • 全面盘点各类应用:学习工作社交生活娱乐分类大全
    学习类语言学习工具口语训练:FiF口语训练平台综合性学习:学习通英语学习:U校园、BBCLearningEnglish、可可英语在线课程学习(跨校跨学科):中国大学MOOC、Coursera、edX词汇学习:quizlet、Anki、欧路词典、弹幕记忆、墨墨背单词、百词斩、沪江开心词场学术研究工具论文相关......
  • Kubernetes 为什么减少对 Docker 的依赖:容器运行时演进背后的技术考量
    1、概述在当今的技术领域,容器技术的崛起与发展离不开Docker和Kubernetes的紧密合作。Docker以其创新性的容器化技术,推动了容器在全球范围内的广泛应用,为开发者提供了从容器镜像构建、容器启动与管理到镜像分发等一站式服务。Kubernetes则专注于大规模容器的编排和自动......
  • Vue - vue 前端项目基础框架搭建流程
    1.初始化项目pnpmcreatevue//添加路由支持pnpmaddvue-router//添加数据状态管理支持pnpmaddpinia//添加UI模块支持pnpmaddelement-plus//添加图标支持pnpmadd@element-plus/icons-vue//增加网络请求模块支持pnpmaddaxios//添加国际化支持pnpmadd......
  • 基于ssm框架的游戏商城系统
    末尾获取源码开发语言:JavaJava开发工具:JDK1.8后端框架:SSM前端:采用JSP技术开发数据库:MySQL5.7和Navicat管理工具结合服务器:Tomcat8.5开发软件:IDEA/Eclipse是否Maven项目:是目录一、项目简介二、系统功能三、系统项目截图个人中心轮播图管理基础数据管理......
  • 2024年免费项目管理软件大盘点——20款必备优秀工具推荐
    在当今快节奏的商业环境中,项目管理软件已成为团队协作和项目成功的关键工具。无论是初创企业还是大型企业,选择合适的项目管理软件都能显著提高工作效率、优化资源分配并确保项目按时完成。随着技术的不断进步,2024年涌现出许多优秀的免费项目管理工具,它们不仅功能强大,而且易于使用......
  • 在 .NET C# 中的邮件合并过程中操作表格单元格
    TXTextControl中的邮件合并类是一个强大的库,旨在通过将数据合并到模板中来自动创建文档。它充当结构化数据(例如来自数据库、JSON或XML)和动态文档生成之间的桥梁,对于需要自动化文档工作流程的应用程序来说非常有用。从本质上讲,MailMerge类简化了创建专业、数据驱动文档......
  • Kubernetes对象-命名空间
    Kubernetes对象-命名空间Kubernetes命名空间何时使用多个命名空间初始命名空间使用命名空间查看命名空间设置请求的命名空间设置命名空间首选项命名空间和DNS不是所有对象都位于命名空间中自动打标签链接Kubernetes命名空间在Kubernetes中,命名空间提供了一种隔......