我正在尝试使用 Unity 构造函数注入来注入 EF ObjectContext。我的尝试是像这样在引导程序中注册类型:
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)
据我所知,使用RegisterType
withnew InjectionConstructor()
作为参数可确保调用默认的无参数构造函数(这就是我想要的)。为什么 Unity 不能按预期解析类型?我想念什么吗?
此致
周杰伦