2010-08-11 53 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