2011-03-18 61 views
0

爲什麼我會遇到這個問題?C#Visual Studio需要引用基類DLL

myClass的從從BaseClass的

繼承

VisualStudio的要我加入到BaseClass的DLL的引用,否則將無法編譯MyClass的類繼承。爲什麼它不使用元數據?如果我購買了dll並且供應商使用了數百個類來繼承,那麼爲什麼我需要知道添加所有這些引用?

感謝

+0

什麼是BaseClass?這是你的其他自定義創建的類嗎?它是否來自同一個命名空間?或者它是在一個特殊的項目?也許單獨組裝? – 2011-03-18 23:47:00

+0

這是一個自定義創建的類在不同的命名空間,幷包含在不同的dll程序集中 – ejuarez 2011-03-24 16:18:16

回答

3

關於你vendor的情況 - 你不會被迫引用所有來自供應商的庫庫如果庫不公開其他任何庫和所有那些庫僅在內部使用。

但是,如果一個庫例如從另一個庫(或它的繼承者)返回一個類,那麼當然你必須同時引用它們。只是爲了獲得關於這些暴露類的所有信息。

2

如果未引用BaseClass,那麼程序如何知道它及其定義?如果它沒有提及它,它應該從哪裏獲取元數據?

這就像問一個關於SO的Web服務器端相關問題,但不告訴任何人你正在使用什麼語言/平臺 - 沒有參考框架。

+0

如果A依賴於B,而B依賴於C,那麼我可以理解A依賴於C.但是如果A引用B,並且B引用C ,爲什麼我需要告訴Visual Studio有一個REFERENCE C?爲什麼它不能爲我做一個深刻的參考?作爲一個選項?某處?如果B被幾十個項目所消耗,我必須爲它們中的每一個增加對C的引用。 – 2012-07-20 23:04:42

1

讓我們來爲您解答...

爲了編譯MyClass的代碼,它需要知道什麼類一樣。爲了知道Class做了什麼,它需要看看BaseClass做了什麼 - 它就像一個鏈。

您需要在項目中包含任何您正在構建的東西。這可以通過實際爲項目中的任何內容創建源代碼,或者通過在定義行爲的地方包含對項目/二進制文件的引用來完成。

元數據不包含關於類中實際邏輯的任何細節。

2

如果你不提供它,它怎麼能得到基類的元數據?它不會從基類複製到派生類並存儲在派生類的程序集中。

您的供應商場景是不現實的。沒有人設計出百級以上的類層次結構,更不用說將它們中的每一個存儲在單獨的程序集中。最糟糕的情況是,這個數字在六或七位上升。有一個基座組件,有時兩個。任何更深層次的人都無法理解它是如何工作的。

+0

我以爲元數據是在創建程序集時創建的,baseclass是在單獨的dll程序集中。引用維基百科文章「...元數據描述了在程序集中定義的所有類和類成員,以及當前程序集將從另一個程序集調用的類和類成員。方法的元數據包含方法的完整描述,包括類(以及包含類的程序集),返回類型和所有方法參數......「 – ejuarez 2011-03-24 16:18:51

+0

不確定引用的點可能是什麼。維基百科不會編譯您的代碼。如果您認爲它應該以不同的方式工作,請發送到connect.microsoft.com。 – 2011-03-24 16:23:04