如何在没有引用的情况下在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();

谢谢你的帮助!

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

解决方案理念

为此,我将使用接口层(称为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:上有一些关于它的好问题

  • 洋葱结构中的典型层是什么?

  • 在分层proeject 中放置依赖注入相关代码的最佳层

  • Onion体系结构、工作单元和通用存储库模式