EasyInjector 1.1.0
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package EasyInjector --version 1.1.0
NuGet\Install-Package EasyInjector -Version 1.1.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="EasyInjector" Version="1.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add EasyInjector --version 1.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: EasyInjector, 1.1.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install EasyInjector as a Cake Addin #addin nuget:?package=EasyInjector&version=1.1.0 // Install EasyInjector as a Cake Tool #tool nuget:?package=EasyInjector&version=1.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
EasyInjector
- 極簡實作 沒有任何其他套件依賴
- 仿照 .net core dependency injection 的使用方法
- 簡單的注入依賴,適用於舊專案.NET4 Framework
- 目標也只是讓一些很古老的專案在不升級的原則下能導入注入依賴
Singleton 範例
injector.AddSingleton<IWebApi>(sp => new ExampleWebApi());
using(var injector = new EasyInjector()) {
//取得服務
var srv = injector.GetSerice<IWebApi>();
srv.GetSomething();
}
Scope 範例
var injector = new EasyInjector();
injector.AddScope<IWebApi>(sp => new ExampleWebApi());
using(injector) {
//取得服務
using(var scope = injector.CreateScope()) {
var srv = scope.ServiceProvider.GetSerice<IWebApi>();
srv.GetSomething();
}
}
額外提供 INamed 作為同類服務有多個實例
using (var injector = new EasyInjector())
{
// 註冊服務 定義名稱如何取得實例
injector.AddScoped<INamed<IFtp>>(sp =>
new NamedService<IFtp>(name =>
new FtpService(name)));
using (var scope = injector.CreateScope())
{
var srvf = scope.ServiceProvider.GetRequiredService<INamed<IFtp>>();
// 依名稱取的不同實例
var srv1 = srvf.GetByName("Spring");
var srv2 = srvf.GetByName("Summer");
// 名稱相同會取到同一個
var srv3 = srvf.GetByName("Spring");
}
}
額外提供 IOptional 選擇性服務
// 某服務
public class SomeService {
IOptional<IFtp> _ftpf;
IServiceScopeFactory _scopef;
// 建構式有清楚的描述本服務 有依賴 IFtp服務的關係
public SomeService(
IOptional<IFtp> ftpf,
IServiceScopeFactory scopef)
{
_ftpf = ftpf;
_scopef = scopef;
}
// 某些動作才須要產生服務IFtp服務 呼叫完成就釋放
public void DoSomething() {
using(var scope = _scopef.CreateScope()) {
// 這時候才真的產生這個服務
var ftp = _ftpf.Get(scope.ServiceProvider);
ftp.DoSomething();
}
}
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET Framework | net40 is compatible. net403 was computed. net45 was computed. net451 was computed. net452 was computed. net46 was computed. net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
This package has no dependencies.
NuGet packages (3)
Showing the top 3 NuGet packages that depend on EasyInjector:
Package | Downloads |
---|---|
EasyInjector.WebMvc
簡單的模仿 .net core 注入依賴庫 整合到 WebMvc 專案 |
|
EasyInjector.Dev
EasyInject擴充套件,提供服務方法的簡單複寫,適用於整合測試 |
|
EasyInjector.WebApi
簡單的模仿 .net core 注入依賴庫 整合到 WebApi Owin專案 |
GitHub repositories
This package is not used by any popular GitHub repositories.