Я пытаюсь внедрить объект ObjectContext EF, используя инъекцию конструктора Unity. Мой attemp должен зарегистрировать тип в bootsprapper, как это:Единство: инъекция конструктора с несколькими конструкторами
protected override void ConfigureContainer()
{
base.ConfigureContainer();
Container.RegisterType<ObjectContext, MyObjectContext>(new InjectionConstructor());
}
EF создает Mutiple конструкторами, которые выглядят как эти
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
с new InjectionConstructor()
в качестве аргумента гарантирует, что конструктор по умолчанию без параметров называется (вот что я хочу). Почему Unity не может разрешить тип, как ожидалось? Мне что-то не хватает?
С наилучшими пожеланиями
Jay
Я отмечаю это как ответ, потому что это привело меня к решению. Кажется, что у Единства были некоторые проблемы, разрешающие этот тип, потому что я зарегистрировал его не в том месте. Я передал контейнер, потому что я думал, что мне понадобится его для разрешения зарегистрированных экземпляров/типов для проектов (оболочка, модули, инфраструктура и т. Д.), Но это, похоже, не является правильным/рабочим способом. – Jay