您好,我的代码结构有问题,它以某种方式进入循环依赖。这是我的代码的解释:
我有一个ProjectA,其中包含BaseProcessor,并且BaseProcessor引用了一个名为Structure的类在ProjectB中。在BaseProcessor内部,有一个Structure实例作为变量。
在projectB中还有一些其他类,例如定价、交易等。 ProjectB 中的每个类都有一个名为 BaseStructure 的基类,即 Structure、Pricing 和Transaction类全部继承自BaseStructure。 现在在 Pricing 和 Transaction 类中,我想从 BaseStructure 类调用 BaseProcessor 类中的方法,这会导致循环依赖性。
我尝试过的是:
使用Unity,但我不知道如何让它工作,因为我尝试使用如下函数:
unityContainer.ReferenceType(IBaseProcessor, BaseProcessor)
在 BaseStructure 中,那么它将需要 BaseProcessor 的引用,这也会导致循环依赖。
我还尝试创建一个IBaseProcessor接口(interface),并在这个接口(interface)中创建一个函数(我想调用的函数)声明。并让BaseProcessor和BaseStructure都继承这个接口(interface)。但是,如何在不创建 BaseProcessor 实例的情况下调用 Pricing 和 Transaction 类中的函数呢?
除了使用反射之外,谁能告诉我如何解决这个问题?
任何帮助将不胜感激。谢谢:)
最佳答案
您可以使用惰性解析:
public class Pricing {
private Lazy<BaseProcessor> proc;
public Pricing(Lazy<BaseProcessor> proc) {
this.proc = proc;
}
void Foo() {
this.proc.Value.DoSomethin();
}
}
请注意,您不必注册 Lazy,因为 Unity 将通过 BaseProcessor 注册来解决它。
关于vb.net - 如何解决循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22601981/