2014-02-19 2 views
1

У меня проблема с затененной видимостью типов. Давайте предположим, что следующий код:Неоднозначное имя типа

namespace A { 
    class B { 
     int V1; 
     class A { 
      class B { } 
      void Foo() { 
       A.B b; 
       // "b" should be of the first type "B", 
       // but it actually points to A.B.A.B 
       b.V1 = 1; //Compile error 
      } 
     } 
    } 
} 

Как я могу объявить переменную типа «AB» (где «А» должно быть пространство имен, не вложенный класс «А») в том месте, где «б» объявляется?

+5

вы, конечно, понимаете, что даже если бы вы могли это сделать, этот код не поддерживается. – akonsu

ответ

11

Используйте "глобальный": ключевое слово:

global::A.B b;

+0

Спасибо! 8 минут, прежде чем я смогу выбрать это как правильный ответ. – Andreas

4

Вы можете использовать псевдоним:

using ClassB = A.B; 

Теперь ClassB относится к типу вы хотите.

Однако я настоятельно рекомендую вам пересмотреть свои имена классов, чтобы это уже не проблема.

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