C # Разрешение области видимости по умолчанию - PullRequest
6 голосов
/ 06 октября 2008

Я унаследовал класс C # 'Button' (который я не могу изменить), который конфликтует с BCL-классом Windows.Forms.Button. Обычно я был бы очень рад пойти:

MyPackage.MyClass.Button;

Но есть большое количество или ссылки на этот класс, которые приходится перепечатывать.

Есть ли способ заставить компилятор (компоновщик?) По умолчанию использовать настроенную версию Button поверх версии BCL?

Ответы [ 5 ]

21 голосов
/ 06 октября 2008

Добавьте это в начало файла:

using MyButton = MyPackage.MyClass.Button;

Теперь вы можете ссылаться на свою пользовательскую кнопку под другим именем. Возможно, вам придется сделать что-то подобное для кнопки акции, если вы используете это в любом месте того же файла.

4 голосов
/ 06 октября 2008

, если вы хотите использовать его по умолчанию, замените

using Windows.Forms;

с

using MyPackage.MyClass;

Если вы сделаете это, вам нужно будет полностью квалифицировать все кнопки из Windows.Forms.

Или, если хотите, вы можете использовать псевдоним пространства имен

using My = MyPackage.MyClass;
//... then
My.Button b = ...

Или псевдоним кнопки

using MyButton = MyPackage.MyClass.Button;
2 голосов
/ 06 октября 2008

Вы можете удалить using Windows.Forms; из верхней части кода. Это, конечно, будет означать, что вам придется ссылаться на все элементы Windows.Forms специально.

0 голосов
/ 06 октября 2008

Похоже, я могу сделать следующее:

using Button = MyPackage.MyClass.Button;

работает и сохраняет все ссылки в коде на Button. Хотя у меня возникает соблазн не идти по этому пути, поскольку все еще не ясно (по крайней мере, для читателя), какая кнопка используется.

0 голосов
/ 06 октября 2008

Вы можете, по крайней мере, сделать его немного менее болезненным / многословным с помощью "using":

using MPMC = MyPackage.MyClass;

тогда вы можете сказать:

MPMC.Button
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...