Vb.net 两个类彼此创建实例

Vb.net 两个类彼此创建实例,vb.net,Vb.net,我有一个web表单,它使用两个类-a和B。a类包含创建CSV和Excel报告所需的所有函数。B类是所有流程特定的代码 整个过程的性质迫使我让类A调用包含在类B中的方法。问题是(我刚刚发现的)类A需要创建类B的实例来实现这一点,而类B已经创建了类A的实例,导致了无限循环 我该怎么处理这件事?如果我能在方法论上指出正确的方向,我应该能够理解它。你所说的流程特定代码是什么意思?如果这是您的业务代码,那么很明显,这两个类之间的区别是ClassA是您的应用程序服务,ClassB是您的业务逻辑 尝试解开这些

我有一个web表单,它使用两个类-a和B。a类包含创建CSV和Excel报告所需的所有函数。B类是所有流程特定的代码

整个过程的性质迫使我让类A调用包含在类B中的方法。问题是(我刚刚发现的)类A需要创建类B的实例来实现这一点,而类B已经创建了类A的实例,导致了无限循环


我该怎么处理这件事?如果我能在方法论上指出正确的方向,我应该能够理解它。

你所说的流程特定代码是什么意思?如果这是您的业务代码,那么很明显,这两个类之间的区别是ClassA是您的应用程序服务,ClassB是您的业务逻辑


尝试解开这些类,使您的业务类使用CSV类,但您的CSV类不使用您的业务类。

与其让每个类彼此创建,不如使用构造函数注入技术,在该技术中,每个类都将它们的依赖项放在那里,存储在一个私有字段中,并在那里使用,而不是创建一个新的,因此,无论启动此过程的是什么,都会立即创建,并根据需要传递给另一个。

您能否将其中一个转换为接口(可能是类A),然后在另一个类中实现它?我已经编辑了您的标题。请参阅“”,其中一致意见是“不,他们不应该”。您可以使用一个带有布尔值的构造函数,并且仅在类a为true时实例化它,但不确定您的类做什么。但是不要让类B实例化类A,而应该在类A中有一个名为InitializeFromClassB(…)的函数,并传递一个类B的实例。@JohnSaunders对此表示抱歉。我一直这么做,所以我想是时候停下来了!谢谢大家的建议!明天当我在我的代码面前时,我会检查它们,然后再报告。