Как добавить компонент массива строк в конфигурацию XML? - PullRequest
0 голосов
/ 14 мая 2019

У меня есть несколько компонентов в файле конфигурации XML, описывающих различные конфигурации.Каждая конфигурация имеет строковый массив свойство IgnoredCountries .Теперь я должен сделать так, чтобы все страны игнорировались для некоторых конфигураций.Чтобы уменьшить размер файла конфигурации (и сделать его более полным), я хотел бы создать отдельный компонент allCountries , который будет содержать все коды стран и просто ссылаться на него при необходимости.Проблема в том, чтобы правильно определить компонент для строкового массива.

Я использую Castle Windsor в качестве IoC-контейнера.Я пытался объявить компонент, используя следующий код, но безуспешно.

<component id="allCountries" service="System.String[], mscorlib">
  <parameters>
    <collection>
      <list>
        <item>AF</item>
        <item>AL</item>
        <item>AS</item>
        <!-- there's a lot of items -->
      </list>
    </collection>
  </parameters>
</component>

При попытке объявить компонент, как показано выше, я получаю исключение, говорящее, что компонент allCountries is waiting for the following dependencies: Parameter '' which was not provided. Did you forget to set the dependency?

1 Ответ

1 голос
/ 23 мая 2019

Это не работает, потому что string или string[] не является допустимым типом компонента. Компоненты должны быть классами, а не примитивами.

В идеале, вы бы не использовали XML для этого, но если вы уверены, что в вашем случае это имеет смысл, вы можете вместо этого поместить его в свойство xml. Я не уверен на 100%, что это сработает, но попробуй. См. Пример в документации здесь .

Более чистым решением было бы обернуть его в классе, а не полагаться на string[]

...