如何在c#中没有引用的情况下将类暴露给外部项目

时间:2016-08-01 08:06:07

标签: c# .net

我有3个名为A,B,C的项目。

在项目A中,我有一个名为“Car”的课程。

在项目B中我引用了A,在项目B中我创建了“Car”列表。

项目C参考了B。

我希望将项目B中的列表放到项目C中并对其执行一些操作。

问题:

在项目CI中不允许引用项目A,其中类“Car”就可以了,所以项目C不知道“Car”类,我不能做下一个命令:

List<Car> cars = B.GetCars();

感谢您的帮助!

1 个答案:

答案 0 :(得分:9)

解决方案构想

我会使用接口层(称为Project I)。

此项目I包含界面ICar

其他项目ABC引用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上有一些很好的问题: