, , , ..
, Windsor :
container
.Register(
Component.For<IReportFormatter>().ImplementedBy<ReportFormatterWord2003>().Named("word2003"),
Component.For<IReportFormatter>().ImplementedBy<ReportFormatterWord2007>().Named("word2007"),
Component.For<IReportFormatter>().ImplementedBy<ReportFormatterPdf>().Named("pdf"),
Component.For<Func<string, IReportFormatter>>().Instance(container.Resolve<IReportFormatter>),
Component.For<Foo>());
Foo
Foo(Func<string, IReportFormatter> reportFormatterFactory)
, Windsor Foo, reportFormatterFactory IReportFormatter, . reesve...
container.Resolve<IReportFormatter>(string)
IReportFormatter, ...
reportFormatterFactory("word2007");
, , factory, factory.