2010-08-11 52 views
5

如何比較兩個的AssemblyName實例,以弄清楚他們是否代表相同的組件? 'Equals'方法未被覆蓋。如何比較兩個AssemblyName實例?

我能想到的一種方式是比較兩個實例的'ToString()'結果,但我更喜歡'Equals'語法,因爲我需要準備一個'unique'AssemblyName實例的列表(List)喜歡使用'Contains(AssemblyName item)'方法。

回答

6

只要您使用強命名的程序集,比較ToString method的輸出就可以,因爲它輸出程序集的全名which is supposed to be consistent and seems to be culture-invariant

如果組件是不強名稱,則可以很容易地創建具有相同名稱和版本號/文化的又一組件,它會具有相同的組件名稱爲你的。

有一點要注意,雖然,因爲該組件名稱是相同的,並不意味着該組件是相同的物理身份;位置是集名稱一部分。

+2

這可能不是足夠證明如果組件是不強命名。我敢肯定,沒有強大的命名,有可能使兩個組件看起來具有相同的名稱但實際上是完全不同的內部。 – 2010-08-11 14:22:02

+0

@馬特:我的情況,我可以有把握地認爲我處理的強命名程序集。 – alwayslearning 2010-08-11 14:27:33

2

我會比較AssemblyName.FullName財產,因爲它代表大會的實際版本具體身份。

+3

'AssemblyName.ToString'是重寫,以返回相同的東西'AssemblyName.FullName' – 2010-08-11 14:19:23