Unity:具有多个构造函数的构造函数注入

时间:2011-07-10 21:51:02

标签: c# .net entity-framework unity-container constructor-injection

我正在尝试使用Unity构造函数注入注入EF ObjectContext。 我的尝试是在bootsprapper中注册类型:

protected override void ConfigureContainer()
{
    base.ConfigureContainer();
    Container.RegisterType<ObjectContext, MyObjectContext>(new InjectionConstructor());
}

EF会创建多个构造函数,看起来像这些

public MyObjectContext() : base("name=MyObjectContext", "MyObjectContext")
public MyObjectContext(string connectionString) : base(connectionString, "MyObjectContext")
public MyObjectContext(EntityConnection connection) : base(connection, "MyObjectContext")

调试我的代码时,Unity抛出一个ResolutionFailedException,告诉我“MyObjectContext类型有多个长度为1的构造函数。无法消除歧义。”在解析具有以下构造函数的新类时。

public MainViewModel(UnityContainer container, MyObjectContext entities)

据我所知,使用RegisterTypenew InjectionConstructor()作为参数确保调用默认的无参数构造函数(这就是我想要的)。为什么Unity不能按预期解析类型?我错过了什么吗?

最好的问候

1 个答案:

答案 0 :(得分:3)

您的注册看起来正确。您确定要调用注册码吗?尝试在其上设置断点。

(偏离主题:为什么要将容器传递给viewmodel?)