web-dev-qa-db-fra.com

À quoi sert la propriété Alias ​​des références d'assembly dans Visual Studio 8

Lorsque j'ajoute une référence d'assembly à un projet dans Visual Studio 8, la propriété Alias, de cette référence, est définie sur "globale". À quoi sert cette propriété et pourquoi est-elle définie comme globale?

MSDN me dit qu'il s'agit d'une liste d'alias pour l'assembly, mais pas pourquoi je pourrais utiliser cette propriété ou pourquoi la plupart sont aliasés comme "globaux".

référence MSDN

65
Spencer Booth

C'est pour les "alias externes". Supposons que vous souhaitiez utiliser deux types différents, tous deux appelés Foo.Bar (c'est-à-dire Bar dans un espace de noms de Foo). Les deux types seront dans des assemblys différents (par définition) - vous utilisez la propriété dans VS pour associer un alias à chaque référence, puis vous pouvez faire:

extern alias FirstAlias;
extern alias SecondAlias;

using FirstBar = FirstAlias::Foo.Bar;
using SecondBar = SecondAlias::Foo.Bar;

puis utilisez FirstBar et SecondBar dans votre code.

Donc, fondamentalement, c'est un niveau supplémentaire de dénomination - et vous ne devriez pas l'utiliser sauf si vous en avez vraiment, vraiment besoin. Cela va dérouter beaucoup de gens. Essayez d'éviter d'entrer dans cette situation en premier lieu - mais soyez conscient de cette solution pour les moments où vous ne pouvez tout simplement pas l'éviter.

112
Jon Skeet

Recherchez " extern alias "; c'est une fonctionnalité très rarement utilisée qui n'est nécessaire que pour lever l'ambiguïté entre deux DLL qui contribuent aux mêmes types (par exemple, deux versions différentes du même assembly, ou deux assemblys qui ont une classe qui partage un nom complet).

"global" est la valeur par défaut. Par exemple, si vous avez une classe appelée Foo.System, vous pouvez vous référer sans ambiguïté à l'espace de noms principal System via global::System.

32
Marc Gravell