Как внедрить зависимость для иерархии в Spring.Net - PullRequest
2 голосов
/ 06 сентября 2011

Как определить конфигурацию для внедрения зависимостей в следующую иерархию объектов:

RootObject
 - ContentObject
   - L11Object
   - L12Object
     - L21Object
     .etc.

* RootObject зависит от ImportantObject, а ContentObject - от AnotherObject.Чтобы определить эти зависимости, я определил следующее:

<object name="RootObject" type="...." abstract="true">
  <constructor-args ../>
</object>
<object name="ContentObject" type="...." abstract="true" parent="RootObject">
  <constructor-args ../>
</object>

Все работает нормально, но Spring.Net требует определить иерархию моих объектов в конфигурации.Можно ли использовать что-то вроде «автообнаружения», чтобы не повторять иерархию наследования в конфигурации через определение parent="..."?

И да, я знаю, что Unity 1.0+ решает это намного лучше, чем Spring.Net, но у меня нет выбора, и я должен использовать Spring.Net.

1 Ответ

1 голос
/ 06 сентября 2011

Звучит так, как ты хочешь Авто-проводка ... Как-то так должно работать:

<objects xmlns="http://www.springframework.net"
         default-autowire="constructor">
  <object type="RootObject" />
  <object type="ContentObject" />
  <object type="L11Object" />
  <object type="L12Object" />
  <object type="L21Object" />
  <!--etc.-->
</objects>

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

Даже если default-autowire определяет поведение по умолчанию для автоматической проводки, вы все равно можете переопределить его в тех элементах object, где это может потребоваться.

...