У меня есть простое приложение на 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. Это автоматически сгенерированное свойство недоступно вам по имени. Но если очень захотеть, его можно найти через рефлексию: компилятор выдумывает для него нечитаемое имя, запрещённое языком, чтобы случайно не попасть в определённое вами имя, относящееся к чему-то другому.
Комментариев нет:
Отправить комментарий