UnityContainer и параметры конструктора - PullRequest
2 голосов
/ 24 ноября 2010

У меня есть класс «Адаптер», который оборачивает объект с именем «X_Session». Этот adpater ожидает ILogger и ICacheManager.

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

А как насчет объекта X_Session? Он не зарегистрирован в Unity, так как мне нужно создать его самому, потому что его конструктору требуются входные параметры, которые я собираю из QueryString.

Разрешить ли мне класс Adpater, а затем установить объект X_Session? Другой лучший способ?

Спасибо

Ответы [ 2 ]

0 голосов
/ 24 ноября 2010

Опять же, с абстрактной фабрикой все просто:

public interface IAdapterFactory {
   Adapter Create(ISession session);
}

public class AdapterFactoryImpl : IAdapterFactory  {
   public AdapterFactoryImpl(IDependency dep) {
       this._dep = dep;
   }

   public Adapter Create(ISession input) { 
     return new Adapter(_dep, input);
   }
}

Вы должны зарегистрироваться в Unity только на фабрике.

0 голосов
/ 24 ноября 2010

Другой идеей было бы зарегистрировать объект X_Session внутри контейнера Unity во время выполнения, а затем Unity внедрил бы все зависимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...