Как извлечь компонент из WindsorContainer только по ключу / идентификатору - PullRequest
0 голосов
/ 28 февраля 2011

В версии 1.3 вы можете использовать contaier [cmpKey], чтобы извлечь компонент со всеми зависимостями, если таковые имеются. В новом выпуске (2.5) этот метод доступа устарел, и ни один из параметров, предоставляемых Resolve Method, действительно не соответствует старому. Я мог бы выяснить тип по ключу / идентификатору, но мне интересно, есть ли еще поддерживаемая причина, по которой можно извлечь cmp только по ключу / идентификатору

Ответы [ 2 ]

0 голосов
/ 01 марта 2011

На самом деле лучший вариант, чем тот, который предложил Маурисио (хотя в его решении нет ничего плохого, кроме аргумента object, который немного сбивает с толку), это

var instance = container.Resolve<object>("component-name");

В Виндзоре, когда ключ предоставлен, он имеет приоритет, и компоненты ищутся только ключом. Этот тип используется только как синтаксический сахар, чтобы избежать литья.

0 голосов
/ 28 февраля 2011
object component = container.Resolve("component-name", new object());

Я бы по-прежнему рекомендовал вместо этого использовать строго типизированный Resolve<T>, если на самом деле нет другого выбора.

...