![](/img/trans.png)
[英]Resolve multiple dependencies for the same interface in a constructor using Unity
[英]Unity DI - resolve interface using constructor
我有以下代碼:
var container = new UnityContainer();
container.RegisterType<Service>(new ContainerControlledLifetimeManager());
class Class1{
public Class1(Service service){
service.Add("123");
}
}
class Class2{
public Class2(Service service){
var data = service.Get(); // return 123
}
}
我有一項服務是單身人士。 但是我想使用構造函數注入:
var container = new UnityContainer();
container.RegisterType<IService, Service>(new ContainerControlledLifetimeManager());
class Class1{
public Class1(IService service){
service.Add("123");
}
}
class Class2{
public Class2(IService service){
var data = service.Get(); // return null
}
}
現在服務不是單例。 為什么? 如何更改我的代碼以使其正常工作? 謝謝
您正在檢查smthg錯誤,因為此代碼應可以正常工作。 例如,我們可以
class Class1
{
public Class1(IService service)
{
service.Add("123");
}
}
class Class2
{
public Class2(IService service)
{
var data = service.Get(); // return NOT null
Console.WriteLine(data);
}
}
public interface IService
{
string Get();
void Add(string item);
}
public class Service : IService
{
private string value;
public string Get()=>value;
public void Add(string item)=>value = item;
}
我們可以使用以下方法進行測試:
var container = new UnityContainer();
container.RegisterType<IService, Service>(new ContainerControlledLifetimeManager());
var cl1 = container.Resolve<Class1>(); // here in ctor we are setting value to 123
var cl2 = container.Resolve<Class2>(); // here we will print it to console
輸出:
123
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.