2009-06-22 2 views
1

Я получаю ошибку компиляции, потому что компилятор думает, что Path.Combine относится к моему полю, но я хочу, чтобы он ссылался на класс System.IO.Path. Есть ли хороший способ справиться с этим, кроме как всегда писать FQN, например System.IO.Path.Combine()?C#: неопределенность пространства имен свойств/полей

using System.IO; 

class Foo 
{ 
    public string Path; 

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

ответ

3

разделите ссылки:

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

я настоятельно рекомендую подразумевающий систему .IO при использовании пути в любом месте внутри класс, потому что очень сложно сказать разницу. Используя это. квалификатор и полное пространство имен делают их отличными.

5

Вы можете сделать это:

using IOPath = System.IO.Path; 

Затем в коде:

class Foo 
{ 
    public string Path; 

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

Я редактировал свой ответ, чтобы добавить этот пример, но у вас уже есть это +1 к вам! –

+0

Это хороший ответ; однако я настоятельно призываю большинство людей, когда это возможно, избегать использования имен, явно противоречащих типам .NET. Такое имя, как FilePath или DataPath, или, может быть, может быть лучшим способом устранения неоднозначности собственности, в то же время добавляя ясность. Тем не менее, я думаю, что это один из тех случаев, когда имя класса Path было, вероятно, плохим выбором со стороны разработчиков .NET, поскольку это общее и полезное имя для свойств. – LBushkin

+0

Или избегайте псевдонимов полностью, особенно если это просто разовый конфликт. –

Смежные вопросы