Динамическое разрешение на основе соглашения об именах в замке Виндзор

У меня, казалось бы, простой вариант использования. Есть компонент ICsvReader. Давайте назовем это просто Reader здесь. Мы загружаем известный набор файлов CSV, и некоторые из них имеют заголовки, а некоторые нет. В настоящее время есть несколько читателей: Reader_Skips1Row, Reader_Skips2Rows и т. Д.

Есть ли способ зарегистрировать только один компонент и заставить Виндзора взглянуть на ключ компонента, убрать часть «_Skips ...» и разрешить требуемый компонент с соответствующими установленными свойствами?

Я попробовал субрезольвер и средство без удачи.

РЕДАКТИРОВАТЬ

Да, есть только одна реализация, но она используется как зависимость и настраивается для разрешения по имени. Ридер настроен в коде

Component.For<ICsvReader>()
         .ImplementedBy<CommaSeparetedCsvReader>()
         .DependsOn(new { SkipHeader = true, HeaderRowsToSkip = 2 } )
         .Named("CommaSeparetedCsvReader_Skips2Rows")
         .Lifestyle.Transient

Component.For<ICsvReader>()
         .ImplementedBy<CommaSeparetedCsvReader>()
         .DependsOn(new { SkipHeader = true, HeaderRowsToSkip = 1 } )
         .Named("CommaSeparetedCsvReader_Skips1Row")
         .Lifestyle.Transient

Component.For<ICsvReader>()
         .ImplementedBy<CommaSeparetedCsvReader>()
         .Named("CommaSeparetedCsvReader")
         .Lifestyle.Transient

Они используются в качестве зависимости в классе процессора. Он настроен в XML, так что он может быть изменен во время выполнения

<component id="Processor 
   type="Processor">
   <parameters>
      <reader>CommaSeparetedCsvReader_Skips2Rows</reader>
   </parameters>
</component>

В идеале я хотел бы зарегистрировать только компонент CommaSeparetedCsvReader, но когда делается попытка разрешить CommaSeparetedCsvReader_Skips2Rows, он должен удалить суффикс, проанализировать его и изменить свойства соответственно.

Можно ли как-то изменить поведение Resolve ()?

Спасибо том

Ответы на вопрос(1)

Ваш ответ на вопрос