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