簡體   English   中英

如何在c#中沒有引用的情況下將類暴露給外部項目

[英]How to expose a class to an external Project without Reference in c#

我有3個名為A,B,C的項目。

在項目AI中有一個名為“Car”的類。

在項目BI中引用了A,並在項目BI中創建了“Car”列表。

項目C參考B.

我想將項目B中的列表放到項目C中並對其執行一些操作。

問題:

在項目CI中不允許引用項目A,其中類“Car”就可以了,所以項目C不知道“Car”類,我不能做下一個命令:

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

謝謝你的幫助!

解決方案

我會為此使用一個接口層 (稱為Project I )。

這個項目I包含接口ICar

其他項目ABC參考I

你的Car類應該實現這個接口,看起來像這樣:

public class Car : ICar
{
    // ... some great Code
}

在Project B您的功能是:

public List<ICar> GetCars()
{
   var myCars = new List<Car>();

   // ... some really special magic

   return (List<ICar>)myCars;
}

現在你的代碼,在項目C可以像這樣使用這個函數:

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

為什么使用接口層?

因為那樣你將在代碼中獲得更多的可操作性 這非常適合使用依賴注入單元測試 它將幫助您在某些情況下替換部分實現,例如在單元測試期間提供Mock對象


設計方法

為了防止spaghetti code我建議查閱Jeffery Palermo的洋蔥建築概念。

在SO上有一些很好的問題:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM