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

Обновлен: Ноябрь 2007

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Дополнительные сведения о руководствах по разработке см. в книге "Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries", Krzysztof Cwalina and Brad Abrams, Addison-Wesley, 2005.

См. также

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

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

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