我有3个名为A,B,C的项目。
在项目A中,我有一个名为“Car”的课程。
在项目B中我引用了A,在项目B中我创建了“Car”列表。
项目C参考了B。
我希望将项目B中的列表放到项目C中并对其执行一些操作。
问题:
在项目CI中不允许引用项目A,其中类“Car”就可以了,所以项目C不知道“Car”类,我不能做下一个命令:
List<Car> cars = B.GetCars();
感谢您的帮助!
答案 0 :(得分:9)
我会使用接口层(称为Project I
)。
此项目I
包含界面ICar
。
其他项目A
,B
和C
引用I
。
你的Car类应该实现这个界面,看起来像这样:
public class Car : ICar
{
// ... some great Code
}
在项目B
中,您的功能将是:
public List<ICar> GetCars()
{
var myCars = new List<Car>();
// ... some really special magic
return (List<ICar>)myCars;
}
现在,项目C
中的代码可以像这样使用此函数:
List<ICar> cars = B.GetCars();
因为这样您将在代码中获得更多可操作性。这非常适合使用依赖注入或单元测试。它可以帮助您在某些情况下替换部分实现,例如在单元测试期间提供模拟对象。
为了防止spaghetti code
我建议查找Jeffery Palermo的洋葱架构的概念。
在SO上有一些很好的问题: