Microsoft Unity - проблема с разрешением - PullRequest
1 голос
/ 28 сентября 2010

Я хочу сделать это:

container.Resolve ();

Когда он это сделает, он собирается ввести IDependency в базовый объект сущности.Однако для зависимости, хранящейся в контейнере, требуется объект типа DependencyValue, которому предоставляется значение из DependencyFactory.Короче говоря, проблема, с которой я столкнулся, заключается в том, что мне нужно, когда Unity создает экземпляр класса, реализующего IDependency, чтобы я мог взять его на себя и вставить пользовательское значение вне контейнера.* Возможно ли это, или лучше всего использовать RegisterInstance для контейнера и создавать экземпляры объектов вручную?Я предпочитаю использовать файл конфигурации для хранения сопоставления, а затем добавить некоторую логику для создания параметров.Это то, для чего предназначен ParameterOverrides?Или мне нужно добавить расширение для этого или как?

Спасибо.

Ответы [ 2 ]

1 голос
/ 29 сентября 2010

Почему вы не используете статическое заводское расширение?

var container = new UnityContainer();
container.AddNewExtension()
         .Configure()
         .RegisterFactory(container =>
                          DependencyFactory.GetValue());
0 голосов
/ 29 сентября 2010

Что, если вы зарегистрируете реализацию DependencyFactory в контейнере (через код или конфигурацию), а разрешение - через его интерфейс.Затем вы вводите DependencyFactory и просто запрашиваете у него необходимый объект.

Если я неправильно понимаю сценарий, у вашего класса есть зависимость, которая определяется во время выполнения через фабрику.Поскольку это именно то, что делает Unity, вы можете использовать правильные регистрации экземпляров (например, с использованием идентификаторов), чтобы использовать Unity в качестве DependencyFactory.

Надеюсь, это поможет.

Спасибо, Дамиан

...