Конфликт имен C#: Мой класс «Тег» конфликтует с «object Control.Tag»

#c# #winforms #naming

Вопрос:

У меня есть пользовательский класс под названием «Тег» в моем проекте VS C#. Я пытаюсь получить доступ к его статическому методу внутри формы WinForm, как это:

 Tag.someMethod()
 

VisualStudio интерпретирует «Тег» как «элемент управления объектом».Тег {get; set;}». Это кажется глупым, но я не уверен, должно ли это произойти и как это решить. Я предпочитаю не переименовывать свой класс, мне нравится это короткое название. Кроме того, я не хочу ссылаться на него, используя пространство имен моего проекта, оно слишком длинное. Можно ли что-нибудь сделать, чтобы заставить VS распознать «Тег» как мой пользовательский класс?

Комментарии:

1. Да, если у вас есть свойство Tag , вызываемое для текущего класса , и также вызываемый отдельный класс Tag , компилятор C# предпочтет это свойство. Обходные пути состоят в том, чтобы использовать (часть) пространства имен или дать ему другое имя, переименовав его или присвоив ему псевдоним ( using X = Tag; )

2. Как насчет переименования вашего класса во что-то более описательное? Мягких названий, как правило, следует избегать, и краткость не всегда коррелирует с ясностью

Ответ №1:

Вы можете использовать псевдоним для пространства имен, если оно большое, а затем использовать его в коде.

 using Project = PC.MyCompany.Project;
Project.Tag.someMethod();