C# 与循环部门和工厂方法有关的问题
我有一个用于创建具体对象的工厂库(项目),我有多个用于具体对象的库 现在我想要一个具体的对象库来调用工厂库来获取另一个具体的对象。但我不能这样做,因为循环依赖。我用的是C#C# 与循环部门和工厂方法有关的问题,c#,dependencies,C#,Dependencies,我有一个用于创建具体对象的工厂库(项目),我有多个用于具体对象的库 现在我想要一个具体的对象库来调用工厂库来获取另一个具体的对象。但我不能这样做,因为循环依赖。我用的是C# 有什么解决办法吗?非常感谢您的帮助。一个有用的解决方案是创建第三个项目,您可以在其中放置指向其他两个项目的方法 例如: 项目A:工厂图书馆 项目B:混凝土物体 projectc(新的):将使用projectb类和projecta库的方法 常规:创建特定项目以拆分具有循环依赖关系的类 希望能有帮助 更新: X-->A-->B(
有什么解决办法吗?非常感谢您的帮助。一个有用的解决方案是创建第三个项目,您可以在其中放置指向其他两个项目的方法 例如: 项目A:工厂图书馆 项目B:混凝土物体 projectc(新的):将使用projectb类和projecta库的方法 常规:创建特定项目以拆分具有循环依赖关系的类 希望能有帮助 更新: X-->A-->B(实际值) 问题: B-->A(循环依赖项) 解决方案: 从B调用A的拆分部分到新项目C(也必须从X指向C) X-->A-->B X-->C
问题已解决:B-->C(无循环依赖关系)尝试界面设计。为此,使用混凝土和工厂的接口。然后进行构造函数注入。你也可以做属性注入,这取决于你,但是构造函数注入更好 项目A:混凝土对象和工厂的接口 那么您的具体对象project B是引用project A的。所有对象都是从A实现的接口,并且只在接口中获取参数。注入工厂,而不是在具体对象中创建工厂。例:
public class ConcreteObjectA : IConcreteObjectA{
public ConcreteObjectA(IFactoryObjectB factoryB){
factoryB.Create();
}
}
那么您的工厂对象project C是project B的引用。所有工厂都在接口中实现,并且只返回接口。例:
public class FactoryObjectB : IFactoryObjectB {
public IConcreteObjectB Create(){
return new ConcreteObjectB();
}
}
客户端的使用情况如下所示:
public void CreateObjectA(){
FactoryObjectB factory = new FactoryObjectB();
ConcreteObjectA objectA = new ConcreteObjectA(factory);
}
将需要从另一个库中的其他库中使用的代码放入Factory库中,并在Factory库和具体对象库中引用这些代码…欢迎使用堆栈溢出!你能发布更多的信息吗,特别是一些显示你尝试过的代码?回答您的问题并不容易,因为它没有包含足够的信息。谢谢您的反馈。但很抱歉,我不清楚谁将创建项目C。现有流程是ProjectX:facade库调用ProjectA:Factory库来获取ProjectB:Concrete对象。现在项目B需要调用项目A来获得另一个项目D:另一个具体的对象。这对我很有用。芬迪,你真的节省了我的时间。非常感谢你。你好@用户2310061不客气。仅供参考,这种设计称为依赖项(构造函数)注入,有或没有抽象工厂模式。