Unity: конструктор с множественными конструкторами - PullRequest
0 голосов
/ 11 июля 2011

Я пытаюсь внедрить EF ObjectContext, используя инъекцию конструктора Unity. Моя попытка состоит в том, чтобы зарегистрировать тип в начальной загрузке как это:

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 с new InjectionConstructor() в качестве аргумента гарантирует, что вызывается конструктор по умолчанию без параметров (это то, что я хочу). Почему Unity не может разрешить тип, как ожидалось? Я что-то пропустил?

С наилучшими пожеланиями

Jay

1 Ответ

3 голосов
/ 11 июля 2011

Ваша регистрация выглядит правильно.Вы уверены, что регистрационный код вызывается?Попробуйте установить на нем точку останова.

(Не по теме: почему вы передаете свой контейнер в модель представления?)

...