2010-09-02 3 views
0

В решении visual studio 2008 у меня есть две версии одного и того же класса в двух разных пространствах имен.Можно ли скрыть классы в глобальном пространстве имен в C#?

В VB, если я это сделать:

imports MyNamespace 
' ... 
dim x as DuplicatedClass = new DuplicatedClass() 

использует MyNamespace.DuplicatedClass вместо глобально пространства имен DuplicatedClass. Между тем, в C#, как это сделать:

using MyNamespace; 
// ... 
DuplicatedClass x = new DuplicatedClass(); 

использует глобально DuplicatedClass пространства имен. Чтобы использовать другую версию, я должен использовать MyNamespace.DuplicatedClass.

Я понимаю, что это сложная настройка, но я не могу ее изменить. Есть ли способ, чтобы C# не видел класс с именами на глобальном уровне или специально не загружал его или ...? Учитывая, сколько классов находится в глобальном пространстве имен, вынуждение выбирать пространство имен каждый раз может быть довольно дорогостоящим.

+0

Являются ли эти классы определенными в отдельных сборках? –

ответ

3

Пожалуй, лучшее, что вы могли бы сделать, это создать, используя псевдоним:

//create alias 
using defDuplicatedClass = MyNamespace.DuplicatedClass; 

defDuplicatedClass x = new defDuplicatedClass(); 

Псевдоним файлов контекстными. Поэтому вам нужно будет повторять его в начале каждого файла по мере необходимости, но, возможно, это лучше, чем повторять пространство имен при каждом возникновении DuplicatedClass.

+0

Ссылка на примерную статью: http://msdn.microsoft.com/en-us/library/c3ay4x3d(VS.80).aspx –

+0

Это работает отлично, спасибо! Не знал о функции псевдонима. По-видимому, он не может переопределить глобальный класс с именами, но это вполне приемлемо. – Groxx

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