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