我正在将一个项目与 Spring.NET 和 Caliburn v2 放在一起。我有一些我正在尝试实例化的对象,但不知道如何去做。
我一直在使用 Caliburn 的 IoC 方面注释(Singleton 和 PerRequest)将对象放入 Spring 上下文中。问题在于我有两个对象,A 和 B,其中对象 B 是对象 A 的子类(意味着 B 也是 A)。这意味着如果我同时注册两者,当请求 A 类型的对象时,Spring 会抱怨模棱两可。为了解决这个问题,我可以停止使用 Caliburn 的 IoC 方面来注册对象,而是在 Spring 上下文 XML 文件中注册它们。这样,我可以在 Spring 上下文文件中指定一个命名对象,以在对象 C 的构造函数中使用,该构造函数需要注入 B 类型的对象。
然而,这产生了一个新问题。对象 B 需要注入 Caliburn 窗口管理器(在实例化上下文 XML 文件中列出的对象时,Spring 容器不可用,但仅在 Caliburn 加载并将其自己的对象添加到 Spring 之后才可用容器)。
我可以简单地删除继承并让对象 A 和 B 之间发生一些代码重复,但是那么进行 OO 编程的意义何在?否则,我想我正在寻找一种在 Spring.NET 上下文 XML 中指定对象的方法,但要在 Caliburn 加载之前阻止它们被解析。
有任何想法吗?