2010-05-11 14 views
2

Y at-il équivalent à une déclaration aliasing comme:Puis-je créer un alias en C# ou VB.NET dans la portée de la méthode?

// C#: 
using C = System.Console; 

ou:

' VB.NET ' 
Imports C = System.Console 

... mais dans la portée de la méthode - plutôt que d'appliquer à un fichier entier?

+1

Quelle serait un cas d'utilisation d'un tel alias? Je ne peux pas penser à une situation où cela pourrait être utile. –

+0

0xA3: J'imagine qu'il pourrait souhaiter rediriger dynamiquement une méthode particulière pour utiliser une classe différente du même nom sans changer de code. Je ne suis pas nécessairement en faveur d'une telle utilisation, mais cela faciliterait ou rendrait cette tâche plus facile, sinon tout à fait intuitive. –

Répondre

3

Bien que cela puisse être excessif, vous pouvez créer une classe partielle et placer uniquement les fonctions auxquelles vous souhaitez que l'alias s'applique dans leur propre fichier avec l'alias.

Dans le principal fichier de classe:

/*Existing using statements*/ 

namespace YourNamespace 
{ 
    partial class Foo 
    { 

    } 
} 

Dans l'autre fichier:

/*Existing using statements*/ 
using C = System.Console; 

namespace YourNamespace 
{ 
    partial class Foo 
    { 
     void Bar() 
     { 
      C.WriteLine("baz"); 
     } 
    } 
} 
0

Voir here et here pour plus de détails.

Exemple:

namespace PC 
{ 
    // Define an alias for the nested namespace. 
    using Project = PC.MyCompany.Project; 
    class A 
    { 
     void M() 
     { 
      // Use the alias 
      Project.MyClass mc = new Project.MyClass(); 
     } 
    } 
    namespace MyCompany 
    { 
     namespace Project 
     { 
      public class MyClass{} 
     } 
    } 
} 
2

En utilisant une référence d'objet serait la voie logique. Vous mettez un peu un obstacle en utilisant une classe statique. A travaillé autour comme ceci:

var c = Console.Out; 
    c.WriteLine("hello"); 
    c.WriteLine("world"); 

Ou la déclaration VB.NET Avec:

With Console.Out 
     .WriteLine("hello") 
     .WriteLine("world") 
    End With