Нет, текущая версия (1.3) Spring.NET поддерживает только конфигурацию XML .Говорили о поддержке кода как конфигурации в будущих версиях, но это еще не материализовано.
На мой взгляд, Castle Windsor намного превосходит по сравнению с Spring.NET.Я не могу вспомнить ни одной особенности Spring.NET, которой нет у Castle Windsor.С другой стороны, Castle Windsor имеет следующие функции, которые недоступны в Spring.NET:
- Код в качестве конфигурации
- Конвенциональная конфигурация
- Больше срока службы
- Пользовательские времена жизни
- Вывод из эксплуатации графов объектов
- Явное отображение интерфейсов / базовых классов на конкретные типы
- Разрешение на основе типов
- Модульноеконфигурация (Установщики)
- Встроенная поддержка декораторов
- Типизированные фабрики
Возможно, есть и другие функции, о которых я забыл ...
Похоже, я был слишком быстр при срабатывании триггера, хотя в мою защиту в документации Spring.NET также говорится, что в текущей версии есть только XML-конфигурация.
Однако оказывается, чтоесли для определенных контекстов, доступен очень примитивный API, который позволяет настраивать контекст без XML.Вот пример:
var context = new GenericApplicationContext();
context.RegisterObjectDefinition("EggYolk",
new RootObjectDefinition(typeof(EggYolk)));
context.RegisterObjectDefinition("OliveOil",
new RootObjectDefinition(typeof(OliveOil)));
context.RegisterObjectDefinition("Mayonnaise",
new RootObjectDefinition(typeof(Mayonnaise),
AutoWiringMode.AutoDetect));
Обратите внимание, как этот API очень близко отражает схему конфигурации XML.Таким образом, вы не получаете никакого свободного API от интерфейса IObjectDefinitionRegistry
, но по крайней мере есть API, который отделен от XML.Построение свободного API поверх этого по крайней мере теоретически возможно.