Лучший способ использования настроек в конфигурационном файле Spring.NET? - PullRequest
1 голос
/ 30 июля 2009

Есть ли лучший способ использования настроек (созданных редактором настроек Visial Stidio) в файле конфигурации Spring.NET, чем использование PropertyRetrievingFactoryObject:

  <object id="myUri" type="Spring.Objects.Factory.Config.PropertyRetrievingFactoryObject, Spring.Core">
    <property name="TargetObject">
      <object type="Properties.Settings, MyAssembly">
      </object>
    </property>
    <property name="TargetProperty" value="Default.MyUri" />
  </object>

  <object name="..." type="...">
    <property name="Uri">
      <ref object="myUri" />
    </property>
  </object>

Неправильно делать это для каждого параметра ...

1 Ответ

1 голос
/ 31 июля 2009

Во-первых, почему бы просто не указать URL-адрес в файле конфигурации Spring.NET? Наличие нескольких способов настройки вашего приложения может быть немного запутанным. Если этот файл был сгенерирован Visual Studio из-за того, что вы добавили веб-ссылку, вам следует изменить свойство «URL-поведение» ваших веб-ссылок с «Динамического» на «Статический». затем вы можете удалить все материалы, которые генерирует VS, файлы настроек и код конфигурации в App.config / Web.config. Чтобы настроить прокси-сервер, просто добавьте его в контейнер и используйте DI для добавления свойства Url.

В любом случае, вы можете достичь того, что хотели сделать с языком Spring Expression:

<object name="..." type="...">
  <property name="Uri" expression="T(Properties.Settings, MyAssembly).Default.MyUri">
</object>

Другим решением является использование компонента VariablePlaceholderConfigurer с интерфейсом IVariableSource: http://www.springframework.net/doc-latest/reference/html/objects.html#objects-variablesource

<object type="Spring.Objects.Factory.Config.VariablePlaceholderConfigurer, Spring.Core">
   <property name="VariableSources">
      <list>
         <object type="MyCustomImplementationVariableSource, MyAssembly"/>
      </list>
   </property>
</object>

<object name="..." type="...">
  <property name="Uri" value="${MyUri}"/>
</object>

MyCustomImplementationVariableSource - это реализация IVariableSource, которая будет разрешать переменные, где вы хотите (например, из вашего класса настроек).

  • Bruno
...