1

我有又大又胖又丑陋的遗留程序。我必须完成的一项任务是向项目 A添加一个新类。项目 B引用项目 A,但我需要添加的功能取决于项目 B中的类的方法。当然,我不能从A引用项目 B,因为这会创建一个循环引用。在类似的情况下,我的方法是创建项目 C并将依赖项从AB移入其中,并让AB都引用它。

但是,对于这个特定的任务,它需要移动如此多的代码,以至于会在解决方案中造成巨大的混乱。

现在,我正在传递封装在 an 中的所需类的实例,object并使用反射来访问我在运行时需要的方法。

有没有其他(更好的)方法可以在不将代码移动到项目 C 的情况下解决这个问题?

4

2 回答 2

3

创建一个在项目 A 中定义的接口,其中包含项目 B 中您希望 A 能够调用的方法的方法签名。在项目 B 中的类上实现该接口。

那么剩下的就是为 B 提供一种方法来告诉 A “我在这里!给我打电话!”。您可以通过在 A 中定义一个将接口作为参数并将其保存在项目 A 中的变量中的静态方法来做到这一点。B 可以调用该方法,并传递实现该接口的类的实例。当 A 需要调用 B 时,它会调用该注册函数存储的接口引用。

于 2010-09-21T23:29:03.530 回答
0

如果您有循环引用,那么您可能在解决方案中将某个项目分成两个项目,然后您可以简单地将他的代码合并到一个项目中,然后删除第二个项目,然后您就不会引入新项目。

于 2010-09-21T23:21:54.310 回答