我有这段代码:
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
}
}
现在服务不是单身人士。为什么?如何更改我的代码以使其正常工作? 感谢
答案 0 :(得分:1)
您正在检查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