Страницы

Поиск по вопросам

понедельник, 15 июля 2019 г.

Фича Resharper или VS?

У меня есть простое приложение на WinForms. Есть различные кнопки: Add, Edit, Delete, Search и т. д. Для этих кнопок я создал свойства, например:
public Button ButtonEdit { get { return buttonEdit; } set { buttonEdit = value; } }
С помощью свойств я обращаюсь к кнопкам из бизнес-логики, делая их enabled в зависимости от условий.
Так вот, после того, как я напишу такое свойство, Resharper предлагает сконвертировать его в автоматическое, то есть в такое:
public Button ButtonEdit { get; set; }
И оно тоже работает правильно. Как в таком случае понятно, что нужно обращаться к кнопке buttonEdit?


Ответ

Очень просто.
Если вы используете автоматическое свойство (public Button ButtonEdit { get; set; }), то поле для этого свойства компилятор генерирует сам, и использует. То есть он при этом не будет использовать ни buttonEdit, ни buttonAdd. Это автоматически сгенерированное свойство недоступно вам по имени. Но если очень захотеть, его можно найти через рефлексию: компилятор выдумывает для него нечитаемое имя, запрещённое языком, чтобы случайно не попасть в определённое вами имя, относящееся к чему-то другому.

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

Отправить комментарий