Проблема установки единства при определении в коде - PullRequest
0 голосов
/ 14 апреля 2010

У меня проблема при запросе ILogger по умолчанию из контейнера Unity. У меня есть этот параметр, определенный в коде (его VB.net)

Dim container As IUnityContainer
...
container.RegisterType(Of ILogger, NullLogger)()
container.RegisterType(Of ILogger, EntLibLogger)("EL")

Когда я получаю ILogger из контейнера, у меня может быть другое имя, например:

 Ioc.Resolve(Of ILogger)("MyLogger")

Однако это вызывает ошибку, поскольку сопоставление не установлено для «MyLogger». Могу ли я заставить контейнер возвращать тип, который был зарегистрирован без имени? На самом деле, когда я использовал установку из web.config, она работала.

Любые советы приветствуются. Благодарю. Приветствия, X.

1 Ответ

0 голосов
/ 26 апреля 2010

Зарегистрированный экземпляр зарегистрирован без имени, поэтому он не должен быть экземпляром по умолчанию / резервным, если запись не найдена.

Но вы могли бы написать расширение для контейнера, чтобы подключиться к процессу разрешения. Или вы можете просто написать Extension-Method для интерфейса IUnityContainer, который обрабатывает это аварийное поведение.

...