0

我想注入一个EF ObjectContext使用Unity构造函数注入。 我学尝试是在这样的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") 

调试时我的代码统一将引发ResolutionFailedException告诉我“之类MyObjectContext有多个长度为1的构造函数。无法消除歧义。“在具有以下构造函数的新类解析时。

public MainViewModel(UnityContainer container, MyObjectContext entities) 

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

问候

周杰伦

回答

3

您的注册看起来正确。你确定注册码正在被调用?尝试在其上放置一个断点。 (为什么你将你的容器传递给你的viewmodel?)

+0

我把这个标记为答案,因为它将我引向了解决方案。 Unity似乎有一些问题可以解决,因为我在错误的地方注册了它。我通过了容器,因为我认为我需要它来解决跨项目(shell,模块,基础设施等)的注册实例/类型,但这似乎并不是正确的/工作方式。 – Jay