2009-06-22 6 views
1

Je reçois une erreur de compilation parce que le compilateur pense que Path.Combine fait référence à mon champ, mais je veux qu'il fasse référence à la classe System.IO.Path. Existe-t-il un bon moyen de gérer cela autre que d'avoir toujours à écrire le FQN comme System.IO.Path.Combine()?C#: propriété/champ ambiguites de l'espace de noms

using System.IO; 

class Foo 
{ 
    public string Path; 

    void Bar(){ Path.Combine("",""); } // compile error here 
} 

Répondre

3

Seperate vos références:

this.Path = System.IO.Path.PathFunction(); 

Je suggère fortement ce qui implique le système Espace de noms .IO lors de l'utilisation de Path n'importe où dans classe, parce qu'il est très difficile de faire la différence. En utilisant le ceci. qualificateur et l'espace de noms complet les rend distincts.

5

Vous pouvez le faire:

using IOPath = System.IO.Path; 

Puis dans votre code:

class Foo 
{ 
    public string Path; 

    void Bar(){ IOPath.Combine("",""); } // compile error here 
} 
+0

Je modifiais ma réponse pour ajouter cet exemple mais vous l'avez déjà +1! –

+0

Ceci est une bonne réponse; cependant, j'inciterais la plupart des gens à éviter, autant que possible, d'utiliser des noms qui sont clairement en conflit avec les types de framework .NET. Un nom comme FilePath ou DataPath, ou quelque chose de ce genre, peut être un meilleur moyen de désambiguïser la propriété tout en ajoutant de la clarté. Cependant, je pense que c'est un de ces cas, où le nom de la classe Path était probablement un mauvais choix de la part des concepteurs .NET, car c'est un nom commun et utile pour les propriétés. – LBushkin

+0

Ou évitez complètement les alias, surtout s'il s'agit d'un conflit ponctuel. –