2013-03-27 4 views
0

Я пытаюсь получить следующий код для работы:Late имя связывают в Unity Injection

 _container.RegisterType<string>(
      new InjectionFactory((ctr, @type, name) => 
       SomeDictionary[name])); 

Это не работает, однако, потому что строка выше регистрируется без имени.

Однако имя не известно на момент регистрации. Мне нужно как-то опоздать связать имя со временем разрешения.

Как это сделать?

+1

Почему вы должны зарегистрировать тип 'string' в контейнере? –

+0

Это просто пример, это может быть IStuff для всех, что имеет значение. И у меня есть словарь , и я хочу получить правильный IStuff на основе имени разрешения, которое не определено во время регистрации. – Alwyn

+0

Пожалуйста, разверните свой вопрос, добавив полную картинку вкл. где находится словарь, где и когда к нему добавляются пары имя/экземпляр, что это за цель и т. д. Что именно вы пытаетесь выполнить? – David

ответ

2

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

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

+0

Я пытаюсь ввести строку запроса из моего restful api в любой параметр в конструкторе менеджера. Это используется, потому что у нас есть архитектура с несколькими арендаторами, и некоторые части строки запроса используются для определения того, как ведут себя менеджеры. Конечно, есть определенная работа, но возможность сделать это будет аккуратной. – Alwyn

Смежные вопросы