Я использую Windsor Castle с IHandlerSelector
для реализации с несколькими арендаторами.
У меня есть две формы FrmInvoice
и пользовательский FrmInvoiceCustomer1
общий интерфейс IFrmInvoice
.Я хочу переключить их с помощью моего класса селектора.
public interface IFrmInvoice
{
void Show();
}
container.Kernel.AddHandlerSelector(
new FrmInvoiceSelector(
new Type[] { typeof(IFrmInvoice) }));
Формы зарегистрированы с этим кодом:
container.Register(AllTypes.FromThisAssembly()
.Pick()
.If(t => t.Name.StartsWith("Frm"))
.Configure((c => c.LifeStyle.Transient)));
Моя основная форма с кнопкой с этим кодом:
private void button1_Click(object sender, EventArgs e)
{
IFrmInvoice form1 = formsFactory.CreateForm<IFrmInvoice>();
form1.Show();
}
Теперь я спрашиваю: как я могу зарегистрировать интерфейс IFrmInvoice
в контейнере Windsor?Это правильный способ сделать это?
обновление
Я думаю, что я очень близок.Таким образом, он работает, но он регистрирует все интерфейсы, используемые моими классами!Есть лучший способ?
container.Register(AllTypes.FromAssemblyContaining<IFrmInvoice>()
.BasedOn(typeof(IFrmInvoice)).WithService.AllInterfaces());