Ошибка регистрации / разрешения компонента Autofac? - PullRequest
1 голос
/ 07 октября 2009

Кажется, у меня проблема - довольно неожиданная; так что я думаю, что могу делать что-то глупое / неправильное.

Я регистрирую две сервисы области контейнера как таковые:

builder.Register<IServiceInfo>(c => CreateServiceInfo(c)).As<IServiceInfo>();
builder.Register<IServiceInfo>(c => CreateServiceInfoSomeOther(c)).As<IServiceInfo>().Named("someOther");

Теперь, когда я пытаюсь решить

container.Resolve<IServiceInfo>()
and container.Resolve<IServiceInfo>("someOther")

Я получаю тот же экземпляр. Я ожидал бы, что первый вызов вернет первый экземпляр, а второй вызов вернет второй экземпляр. Почему так происходит?

Я надеюсь, что здесь есть несколько активных экспертов по Autofac, и я был бы признателен за любую помощь, чтобы быстро исправить это.

Спасибо всем!

1 Ответ

2 голосов
/ 07 октября 2009

Когда две службы зарегистрированы, побеждает последняя (не имеет значения, что вторая названа, это все еще регистрация для этой службы), если вы не запросите экземпляр по имени.

Вы можете использовать ".DefaultOnly ()", чтобы изменить вторую регистрацию так, чтобы первая была действительной по умолчанию. Для получения дополнительной информации см. вики-страницу .

...