依赖注入非接口构造函数

时间:2014-11-12 14:39:35

标签: c# dependency-injection

我正在使用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"));

1 个答案:

答案 0 :(得分:2)

如果你提供InjectionConstructor来为构造函数提供参数,那么你需要提供所有参数,即使它们本身就是注册接口。

container.RegisterType<Irepo, Repo>("user", new InjectionConstructor(
    container.Resolve<IOther>(),
    "user"
));