我正在使用Unity并且我想要执行以下操作:我基本上想要将值类型传递给基础构造函数。
这是典型的InterfaceL
public interface Irepo
{
void test();
}
这是实现的类,我希望能够在构造函数中注入非接口。这有可能吗?
public class Repo : baseRepo, Irepo
{
public Repo(IOther other, string username) : base(username)
{}
public void test(){}
}
这是unityconfig:
container.RegisterType<Irepo, Repo>();
container.RegisterType<IOther , Other>();
我试过这个,但它说Repo没有一个带字符串的参数。有人有什么想法吗?
container.RegisterType<Irepo, Repo>("user", new InjectionConstructor("user"));
答案 0 :(得分:2)
如果你提供InjectionConstructor
来为构造函数提供参数,那么你需要提供所有参数,即使它们本身就是注册接口。
container.RegisterType<Irepo, Repo>("user", new InjectionConstructor(
container.Resolve<IOther>(),
"user"
));