Mik*_*ogh 4 wpf dependency-properties
为什么以这种方式创建DependencyProperty成员:
public static readonly DependencyProperty DepProperty = DependencyProperty.Register(...);
Run Code Online (Sandbox Code Playgroud)
而不是这样:
protected static readonly DependencyProperty DepProp = DependencyProperty.Register(...);
Run Code Online (Sandbox Code Playgroud)
当我们拥有CLR"包装器"时,为什么我们需要从外部使用DevProp成员:
public bool Dep
{
get { return (bool)GetValue(DepProperty); }
set { SetValue(DepProperty, value); }
}
Run Code Online (Sandbox Code Playgroud)
根据MSDN,限制性访问修饰符实际上并不提供某些API的预期访问保护,因此除了声明依赖项属性及其标识符字段之外没有任何意义public:
依赖属性安全注意事项
应将依赖属性声明为公共属性.应将依赖属性标识符字段声明为公共静态字段.即使您尝试声明其他访问级别(例如protected),也始终可以通过标识符与属性系统API一起访问依赖项属性.由于作为属性系统一部分的元数据报告或值确定API(例如LocalValueEnumerator),甚至可以访问受保护的标识符字段.有关更多信息,请参阅依赖项属性安全性.
public无论如何,暴露它们没有任何伤害,我会聚集.