为什么以这种方式创建DependencyProperty成员:
public static readonly DependencyProperty DepProperty = DependencyProperty.Register(...);
而不是那样:
protected static readonly DependencyProperty DepProp = DependencyProperty.Register(...);
当我们拥有CLR“包装器”时,为什么我们需要从外部使用DevProp成员:
public bool Dep
{
get { return (bool)GetValue(DepProperty); }
set { SetValue(DepProperty, value); }
}
答案 0 :(得分:5)
According to MSDN,限制性访问修饰符实际上并不提供某些API的预期访问保护,因此除了public
之外,没有必要声明依赖项属性及其标识符字段:
依赖项属性安全注意事项
应将依赖属性声明为公共属性。应将依赖属性标识符字段声明为公共静态字段。即使您尝试声明其他访问级别(例如protected),也始终可以通过标识符与属性系统API一起访问依赖项属性。由于元数据报告或属性系统中的值确定API(例如LocalValueEnumerator),甚至可以访问受保护的标识符字段。有关详细信息,请参阅Dependency Property Security。
无论如何,将它们暴露为public
并没有任何伤害,我会聚集在一起。
答案 1 :(得分:0)
依赖属性通常应被视为公共属性,可由任何有权访问实例的调用者访问或至少可被发现。
我认为“依赖属性安全考虑因素”一节 “在下面的链接可以帮助您理解为什么依赖属性以这种方式实现/注册,以及更多内容:
http://msdn.microsoft.com/en-us/library/ms753358.aspx
由于