Поделиться через


Разработка свойств

В общем случае методы представляют действия, а свойства — данные. Свойства используются как поля; это означает, что свойства не должны быть сложными для вычисления или приводить к побочным эффектам. Дополнительную информацию о разработке свойств см. Разработка индексированных свойств и События уведомления об изменении свойств.

Следующие рекомендации помогут Вам быть уверенными в том, что свойства разработаны правильно.

Создавайте свойства с атрибутом "read-only", если при вызове значение свойства не должно быть изменено.

Следует учитывать, что конечный пользователь может изменить только то, что определено как свойство изменяемого типа. Например, если вы определите свойство, которое возвращает коллекцию чтения/записи с атрибутом "read-only", конечный пользователь не сможет назначить свойству другую коллекцию, но сможет модифицировать элементы коллекции.

Не предоставляйте свойств "set-only".

Используйте метод для установки значения свойства, если невозможно обеспечить получателя значения свойства. Имя метода должно начинаться с Set, за которым следует требуемое имя свойства. Например, AppDomain имеет метод с именем SetCachePath вместо свойства CachePath с атрибутом "set-only".

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

Свойства можно устанавливать в любом порядке, даже если это приводит к временно неработоспособному состоянию объекта.

Сохраняйте предыдущее значение свойства, если установщик значения свойства генерирует исключение.

Избегайте генерирования исключений из получателей значений свойств.

Получатели значений свойств должны быть простыми операциями без каких-либо условий. Если получатель значения свойства может генерировать исключение, следует подумать о преобразовании свойства в метод. Эти рекомендации неприменимы для индексаторов. Индексаторы могут генерировать исключения из-за неправильных аргументов.

Допустимо и приемлемо генерировать исключения из установщика значений свойств.

Охраняется авторским правом Copyright 2005 Microsoft Corporation. Все права защищены.

Фрагменты — © Addison-Wesley Corporation. Все права защищены.

Для дополнительной информации о разработке руководящих принципов, смотрите "руководства по разработке рамок: Конвенций, идиомы и шаблоны для повторного использования.NET библиотек"книга, Кшиштоф Cwalina и Брэд Абрамс, опубликованных Addison-Wesley, 2005 года.

См. также

Другие ресурсы

Правила разработки членов

Руководство по разработке библиотек классов