LightInject.cs線程
new ServiceContainer繼承
container.Register<IFoo, Foo>();
container.Register<IFoo, AnotherFoo>("AnotherFoo");
var instance = container.GetInstance<IFoo>("AnotherFoo");
Assert.IsInstanceOfType(instance, typeof(AnotherFoo));接口
獲取實例有多個重載,主要包含服務,藉口,服務名,以及生命週期。當只有一個註冊存在時,獲取能夠不用填寫服務名生命週期
var container = new ServiceContainer();
container.RegisterFallback((type, s) => true, request => new Foo());
var foo = container.GetInstance<IFoo>();容器
第一個斷言決定了是否實例第二個委託服務,第二個是要註冊的服務委託request
若是註冊時不指定生命週期,則是實例是臨時的im
容器在指定範圍內使用後被銷燬項目
container.Register<IFoo,Foo>(new PerScopeLifetime());
using(container.BeginScope())
{vi
var firstInstance = container.GetInstance<IFoo>();
var secondInstance = container.GetInstance<IFoo>();
Assert.AreSame(firstInstance, secondInstance);
}sse
隨容器銷燬。
每次都會建立一個實例
一個生命週期實例只能用於一個服務實例,不能共享
獲取實例是在當前線程中獲取