Почему члены DependencyProperty объявлены публично незащищенными? - PullRequest
4 голосов
/ 19 октября 2011

Зачем создавать член DependencyProperty таким образом:

public static readonly DependencyProperty DepProperty = DependencyProperty.Register(...);

, а не так:

protected static readonly DependencyProperty DepProp = DependencyProperty.Register(...);

Почему нам нужно использовать элемент DevProp извне, когда у нас естьCLR "обертки":

public bool Dep
{
    get { return (bool)GetValue(DepProperty); }
    set { SetValue(DepProperty, value); }
}

Ответы [ 2 ]

5 голосов
/ 19 октября 2011

Согласно MSDN , модификаторы ограниченного доступа на самом деле не обеспечивают предполагаемой защиты доступа от определенных API, поэтому нет смысла объявлять свойства зависимостей и их поля идентификаторов, кроме public:

Вопросы безопасности свойств зависимостей

Свойства зависимостей должны быть объявлены как открытые свойства.Поля идентификатора свойства зависимости должны быть объявлены как открытые статические поля.Даже если вы попытаетесь объявить другие уровни доступа (например, защищенные), свойство зависимости всегда может быть доступно через идентификатор в сочетании с API системы свойств.Даже защищенное поле идентификатора потенциально доступно из-за API создания отчетов о метаданных или определения значений, которые являются частью системы свойств, например LocalValueEnumerator .Для получения дополнительной информации см. Безопасность свойств зависимостей .

В любом случае, это не повредит, выставив их как public, я бы понял.

0 голосов
/ 19 октября 2011

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

Я думаю, что раздел «Вопросы безопасности свойства зависимости» в приведенной ниже ссылке может помочьВы понимаете, почему свойства зависимостей реализуются / регистрируются таким образом и подробнее об этом:

http://msdn.microsoft.com/en-us/library/ms753358.aspx

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...