C# 在到达方法时避免循环依赖
我一直在努力解决我在依赖性方面遇到的这个问题。我需要从A类到B类以及B类到A类的参考资料。这可能吗?A持有我需要在B中使用的声明类型,因此我需要访问A到B和B到A 有没有办法解决这个问题或者有什么想法?不能移动A中的类型,也不能移动B中的方法。(否则就不会有任何问题) GUI-Factory-XMLSerialize,其中Factory是A,XML是BC# 在到达方法时避免循环依赖,c#,C#,我一直在努力解决我在依赖性方面遇到的这个问题。我需要从A类到B类以及B类到A类的参考资料。这可能吗?A持有我需要在B中使用的声明类型,因此我需要访问A到B和B到A 有没有办法解决这个问题或者有什么想法?不能移动A中的类型,也不能移动B中的方法。(否则就不会有任何问题) GUI-Factory-XMLSerialize,其中Factory是A,XML是B //关于简短的回答是否定的。你不能有循环依赖关系。您的问题的常见解决方案是将共享功能抽象为第三类,然后从a和B中引用。如果您说这不可能,那么您的
//关于简短的回答是否定的。你不能有循环依赖关系。您的问题的常见解决方案是将共享功能抽象为第三类,然后从a和B中引用。如果您说这不可能,那么您的目标可能不可能。简短的回答是不。您不能有循环依赖关系。您的问题的常见解决方案是将共享功能抽象为第三类,然后从a和B中引用。如果您说这不可能,那么您的目标可能不可能。这听起来不仅可能,而且很正常。例如,
人员
类可以引用部门
类,部门
可以引用人员
。这方面的例子随处可见
尽量避免在
部门
中创建人员
实例变量(属性)。您希望使引用尽可能短,以避免内存泄漏 这听起来不仅可能,而且很正常。例如,人员
类可以引用部门
类,部门
可以引用人员
。这方面的例子随处可见
尽量避免在
部门
中创建人员
实例变量(属性)。您希望使引用尽可能短,以避免内存泄漏 此代码有循环引用,可以很好地编译:
public class A {
B b;
}
public class B {
A a;
}
所以我不确定到底是什么导致了你的问题。也许您正试图将A和B分别作为不同的程序集(也称为不同的DLL)?不幸的是,这是不可能的
如果你处于这种情况,那么你能做的最好的事情是:
大会1:
public interface IA { ... }
public interface IB { ... }
组件2(取决于1):
组件3(取决于组件2):
组件4(取决于1-3):
此代码具有循环引用,可以很好地编译:
public class A {
B b;
}
public class B {
A a;
}
所以我不确定到底是什么导致了你的问题。也许您正试图将A和B分别作为不同的程序集(也称为不同的DLL)?不幸的是,这是不可能的
如果你处于这种情况,那么你能做的最好的事情是:
大会1:
public interface IA { ... }
public interface IB { ... }
组件2(取决于1):
组件3(取决于组件2):
组件4(取决于1-3):
对于程序集是这样,但对于类不是这样。@nunzabar-循环引用,是的,好的,没问题。循环依赖(即继承),从不(类或程序集)。这对程序集是正确的,但对类不是。@nunzabar-循环引用,是的,好的,没问题。循环依赖(即继承),从不(类或程序集)。您所说的“保留声明的类型”是什么意思?当然可以声明两个方法/属性/字段相互引用的类。您所说的“保留声明的类型”是什么意思?当然可以声明两个方法/属性/字段相互引用的类。是的,我必须这样做。非常感谢您的帮助!!是的,我必须这样做。非常感谢你的帮助!!
B b = new B();
A a = new A();
b.a = a;
a.b = b;