Я создаю проект вместе с Spring.NET и Caliburn v2. У меня есть несколько объектов, которые я пытаюсь создать, но не знаю, как это сделать.
Я использовал аннотации аспектов IoC от Caliburn (Singleton и PerRequest) для получения объектов в контексте Spring. Проблема в том, что у меня есть два объекта, A и B, где объект B является подклассом объекта A (что означает, что B также является A). Это означает, что если я зарегистрирую оба, Spring сообщит о двусмысленности при запросе объекта типа A. Чтобы обойти это, я мог бы перестать использовать аспекты IoC Caliburn для регистрации объектов и вместо этого зарегистрировать их в XML-файлах контекста Spring. Таким образом, я могу указать именованный объект в файле контекста Spring для использования в конструкторе объекта C, которому требуется внедренный объект типа B.
Однако это создает новую проблему. Объекту B необходимо внедрить оконный менеджер Caliburn (который недоступен для контейнера Spring в то время, когда создаются экземпляры объектов, перечисленных в контекстных XML-файлах, но только позже, после того, как Caliburn загрузился и добавил свои собственные объекты в Spring. контейнер).
Я мог бы просто удалить наследование и позволить некоторому дублированию кода между объектами A и B, но тогда какой смысл в программировании OO? В противном случае я думаю, что ищу способ указать объекты в XML-контексте Spring.NET, но не позволять им разрешать до тех пор, пока не загрузится Caliburn.
Любые идеи?