1

我一直在试图弄清楚我在依赖项方面遇到的这个问题。我需要从 A 类到 B 类以及从 B 类到 A 类的引用。这甚至可能吗?A 持有我需要在 B 中使用的声明类型,因此我需要访问 A 到 B 和 B 到 A。

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

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

//问候

4

3 回答 3

2

这不仅听起来可能,而且听起来很正常。例如,一个Person类可以有一个Department类的引用,而Department可以有一个Person. 你会在各处找到这样的例子。

尽量避免PersonDepartment. 您希望使引用尽可能短,以避免内存泄漏。

于 2013-03-21T21:15:30.220 回答
2

此代码具有循环引用,并且可以正常编译:

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;
于 2013-03-21T23:43:51.930 回答
1

最简洁的答案是不。你不能有循环依赖。您的问题的常见解决方案是将共享功能抽象为第三类,然后从 A 和 B 中引用它。如果您说这是不可能的,那么您的目标可能是不可能的。

于 2013-03-21T21:14:21.693 回答