extern alias (référence C#)

Il se peut que vous deviez référencer deux versions d’assemblys qui ont le même nom de type qualifié complet. Par exemple, vous pourriez avoir à utiliser plusieurs versions d’un assembly dans la même application. En utilisant un alias d’assembly externe, vous pouvez encapsuler les espaces de noms de chaque assembly dans des espaces de noms racines nommés par l’alias, ce qui permet de les utiliser dans le même fichier.

Notes

Le mot clé extern est également utilisé comme modificateur de méthode, déclarant une méthode écrite en code non managé.

Pour référencer deux assemblys portant le même nom de type qualifié complet, vous devez spécifier un alias à l’invite de commandes, comme suit :

/r:GridV1=grid.dll

/r:GridV2=grid20.dll

Cela crée les alias externes GridV1 et GridV2. Pour utiliser ces alias à partir d’un programme, référencez-les en utilisant le mot clé extern. Par exemple :

extern alias GridV1;

extern alias GridV2;

Chaque déclaration d’alias externe introduit un espace de noms racine supplémentaire qui est parallèle à l’espace de noms global (mais n’est pas compris dedans). Ainsi, vous pouvez référencer les types de chaque assembly sans ambiguïté en utilisant leur nom qualifié complet, enraciné dans l’alias d’espace de noms approprié.

Dans l’exemple précédent, GridV1::Grid serait le contrôle de grille de grid.dll, et GridV2::Grid serait le contrôle de grille de grid20.dll.

Utilisation de Visual Studio

Si vous utilisez Visual Studio, les alias peuvent être fournis de manière similaire.

Ajoutez une référence de grid.dll et grid20.dll à votre projet dans Visual Studio. Ouvrez un onglet de propriété et modifiez les alias de global en GridV1 et GridV2 respectivement.

Utilisez ces alias de la même façon ci-dessus

 extern alias GridV1;  
  
 extern alias GridV2;  

Vous pouvez maintenant créer un alias pour un espace de noms ou un type avec une directive using alias. Pour plus d’informations, consultez Directive using.

using Class1V1 = GridV1::Namespace.Class1;

using Class1V2 = GridV2::Namespace.Class1;

Spécification du langage C#

Pour plus d'informations, voir la spécification du langage C#. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.

Voir aussi