Допустим, у меня есть интерфейс для определения отчетов о форматировании:
public interface IFormatter
{
string Name {get;}
Report Format(InputData data);
}
и реализация поставщика, который будет форматировать отчеты для меня:
public FormatterProvider : IFormatterProvider
{
private readonly IList<IFormatter> _formatter;
public FormatterProvider(IList<IFormatter> formatters)
{
_formatters = formatters;
}
public IFormatter GetFormatter(string name){ return _formatters.Where(x => x.Name == name); }
}
Я знаю, что могу зарегистрировать всеформатеров в сборке, использующей эту регистрацию:
container.Register(
AllTypes.FromAssemblyName("MyCompany.Formatters")
.BasedOn<IFormatter>()
.WithService
.FromInterface()
);
Но как мне зарегистрировать провайдера, чтобы любые конструкторы, зарегистрированные в контейнере, передавались его конструктору?