Динамическое разрешение на основе соглашения об именах в замке Виндзор
У меня, казалось бы, простой вариант использования. Есть компонент ICsvReader. Позволять'Назовите это просто Reader здесь. Мы загружаем известный набор файлов CSV, и некоторые из них имеют заголовки, а некоторые нет. В настоящее время есть несколько читателей: Reader_Skips1Row, Reader_Skips2Rows и т. Д.
Есть ли способ зарегистрировать только один компонент и заставить Виндзор взглянуть на ключ компонента?_Skips ...» разделить и разрешить требуемый компонент с установленными соответствующими свойствами?
Я попробовал субрезольвер и средство без удачи.
РЕДАКТИРОВАТЬ
Да, есть только одна реализация, но она используется как зависимость и настраивается для разрешения по имени. Ридер настроен в коде
Component.For()
.ImplementedBy()
.DependsOn(new { SkipHeader = true, HeaderRowsToSkip = 2 } )
.Named("CommaSeparetedCsvReader_Skips2Rows")
.Lifestyle.Transient
Component.For()
.ImplementedBy()
.DependsOn(new { SkipHeader = true, HeaderRowsToSkip = 1 } )
.Named("CommaSeparetedCsvReader_Skips1Row")
.Lifestyle.Transient
Component.For()
.ImplementedBy()
.Named("CommaSeparetedCsvReader")
.Lifestyle.Transient
Они используются в качестве зависимости в классе процессора. Он настроен в XML, так что он может быть изменен во время выполнения