2012-01-02 4 views
0

У меня есть следующий код:Передача аргумента в глубокой активации класса

class Controller 
{ 
    public Controller(Listener audioListener, 
         Listener videoListener) 
    {} 
} 

class Listener 
{ 
    public Listener(int port) 
    { 
      Console.WriteLine(port); 
    } 
} 

Теперь мне нужно, что Listener разрешен один раз audioPort, а другой с videoPort.

var audioPort = 1330; 
var videoPort = 1331; 
var controller = kernel.Get<Controller>(); // should print 1330 and 1331 

До сих пор я сделал это при связывании с WithConstructorArgument, который принимает обратный вызов. Мне было интересно, могу ли я установить обратный вызов при фактическом разрешении типа?

+0

Есть данные о перегрузке thta takwes (включая те, которые наследуются по цепочке). Для всего этого наилучшим ответом является поиск соответствующего примера в тестах - они аккуратные и компактные. Дайте нам знать, как вы поживаете ... (Также обязательно посмотрите условные обязательные и реальные статьи в вики). –

+0

Откуда берутся эти порты? статичность, конфигурация, неизвестность до создания слушателя? И вы уверены, что единственная разница между обработкой аудио и видео - это порт? Звучит немного странно, что вы можете сделать две разные вещи с одной и той же реализацией. –

ответ

0

Я сделал небольшое исследование, и, очевидно, проблема в другом.

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

Более подробный способ использования аргументов во время выполнения объясняется here.

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