盤點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 classWarriorModule : NinjectModule
{
publicoverridevoidLoad()
{
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>(Life style.Transient);
container.Register<ILogger, MailLogger>(Life style.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();
覺得好看 點個在看👇