在到达方法时避免循环依赖

本文关键字:循环 依赖 方法 | 更新日期: 2023-09-27 18:05:17

我一直在试图找出这个问题,我有依赖关系。我需要从A类到B类的引用,也需要从B类到A类的引用,这可能吗?A保存了我需要在B中使用的声明类型,因此我需要访问A to B和B to A。

是否有解决这个问题的方法或想法?A中的类型不能移动,B中的方法也不能移动。(否则就不会有任何问题了)。

GUI - Factory - XMLSerialize,其中Factory是A, XML是B

//问候

在到达方法时避免循环依赖

这听起来不仅可能,而且很正常。例如,Person类可以引用Department类,而Department类可以引用Person类。这样的例子随处可见。

尽量避免在Department中创建Person实例变量(属性)。您希望使引用尽可能短,以避免内存泄漏。

这段代码有循环引用,可以正常编译:

public class A {
    B b;
}
public class B {
    A a;
}

所以我不确定到底是什么导致了你的问题。也许你想让A和B各自作为不同的组件(又名不同的dll)?不幸的是,这是不可能的。

如果你在这种情况下,那么你能做的最好的就是:

组装1:

public interface IA { ... }
public interface IB { ... }

汇编2(取决于1):

public class A {
  IB b;
}

汇编3(取决于2):

public class B {
  IA a;
}

组件4(取决于1-3):

B b = new B();
A a = new A();
b.a = a;
a.b = b;

简短的回答是否定的。你不能有循环依赖。常见的解决方法是将共享特征抽象到第三类中,然后从a和b中引用它。如果你说这是不可能的,那么也许你的目标是不可能的。