![](/img/trans.png)
[英]C# Adding a reference to a class in another project without referencing the project
[英]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
。
其他項目A
, B
和C
參考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.