代码之家  ›  专栏  ›  技术社区  ›  Tamás Szelei

在不引入新项目的情况下解决循环引用

  •  1
  • Tamás Szelei  · 技术社区  · 14 年前

    我有一个又大又胖又丑的遗产项目。我必须完成的一项任务是向中添加一个新类 项目A 项目B 项目A . 当然,我不能参考 项目B A 项目C 并将依赖项从 A B类 两样都有 A B类 引用它。

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

    object 使用反射来访问我在运行时需要的方法。

    有没有其他(更好的)方法来解决这个问题而不把代码移到C项目中?

    2 回复  |  直到 14 年前
        1
  •  3
  •   dthorpe    14 年前

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

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

        2
  •  0
  •   Svisstack    14 年前

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