如何在没有引用的情况下在c#中将类公开给外部项目
本文关键字:项目 外部 引用 情况下 | 更新日期: 2023-09-27 17:59:41
我有三个项目,分别叫A、B、C。
在项目A中,我有一个名为"汽车"的课。
在项目B中,我参考了A,在项目B我创建了"汽车"列表。
项目C参考B.
我想把项目B的清单放到项目C中,并在上面做点什么
问题:
在项目C中,我不允许引用项目A中的类"Car",所以项目C不知道"Car"类,我不能执行下一个命令:
List<Car> cars = B.GetCars();
谢谢你的帮助!
解决方案理念
为此,我将使用接口层(称为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:上有一些关于它的好问题
洋葱结构中的典型层是什么?
在分层proeject 中放置依赖注入相关代码的最佳层
Onion体系结构、工作单元和通用存储库模式