2010-08-11 5 views
5

Comment comparer deux instances AssemblyName pour savoir si elles représentent le même assembly? La méthode "Equals" n'est pas annulée. Une façon dont je peux penser est de comparer les résultats 'ToString()' des deux instances, mais je préférerais une syntaxe 'Equals' puisque je dois préparer une liste (List) d'instances AssemblyName 'uniques' et aime utiliser la méthode 'Contient (élément AssemblyName)'.Comment comparer deux instances AssemblyName?

Répondre

6

Tant que vous utilisez des assemblys fortement nommés, la comparaison de la sortie du ToString method conviendrait, car elle affiche le nom complet de l'assemblage, which is supposed to be consistent and seems to be culture-invariant. Si les assemblages n'ont pas de nom fort, alors vous pouvez facilement créer un autre assemblage avec le même nom et le même numéro de version/culture et il aura le même nom d'assemblage que le vôtre. Une chose à noter cependant, parce que les noms d'assemblage sont les mêmes ne signifie pas que les assemblages sont la même identité physique; l'emplacement est et non partie du nom de l'assemblage.

+2

Cela peut ne pas s'avérer suffisant si les assemblys ne sont pas forts nommés. Je suis assez sûr que sans nommer fort, il est possible de faire apparaître deux assemblées ayant le même nom mais qui sont en réalité complètement différentes à l'intérieur. –

+0

@Matt: Dans mon cas, je peux supposer que j'ai affaire à des assemblées fortement nommées. – alwayslearning

2

Je comparerais la propriété AssemblyName.FullName, car elle représente l'identité spécifique de la version de l'assembly.

+3

'AssemblyName.ToString' est substitué pour retourner la même chose que' AssemblyName.FullName' –