Я пытаюсь использовать Ninject в качестве моей инфраструктуры IoC для службы Windows. У меня есть следующие классы и интерфейсы:Устранение различных экземпляров на основе конфигурации
Ассамблея Core:
public class Orchestrator : IOrchestrator
{
...
public Orchestrator(ITerminal terminal)
{
...
}
...
}
Ассамблея Vx520:
public class Vx520 : ITerminal
{
...
public Vx520(string comPort, int bauds, int dataBits, Parity parity, StopBits stopBits)
{
...
}
...
}
Ассамблея Vx580:
public class Vx580 : ITerminal
{
...
public Vx580(string ip, int port)
{
...
}
...
}
Моя идея заключается в том, чтобы использовать ConfigurationSection
чтобы пользователь мог настроить, какие и сколько терминалов он хочет. Например, в следующей конфигурации, я должен получить 3 Orcestrator экземпляров, один с терминалом Vx520, а два других с Vx580, каждый с его пользовательские настройки:
<Terminals>
<add Type="Vx520" ComPort="COM3" Bauds="9600" DataBits="8" Parity="None" StopBits="One" />
<add Type="Vx580" Ip="192.168.0.50" Port="33999"/>
<add Type="Vx580" Ip="192.168.0.51" Port="33999"/>
</Terminals>
У меня есть конфигурация часть работает, с IEnumerable<TerminalConfiguration>
в качестве конечного выхода. Есть ли способ динамически разрешить зависимость для класса Orchestrator
, используя этот список конфигураций? Если Ninject неспособен сделать это, есть ли другая инфраструктура IoC, которую вы можете мне порекомендовать?
Спасибо заранее
Какой из них вы хотите вставить в «Orchestrator»? На основании чего вы принимаете решение? –
@YuvalItzchakov На основании списка «TerminalConfiguration». Предположим, что у меня есть 3 элемента в этом списке, затем я хочу, чтобы 3 'Orchestrator' каждый из них имел один из терминалов, основанный на поле« Тип »конфигурации –