为什么将 DependencyProperty 成员声明为 public 而不是 protected?

2023-12-15

为什么以这种方式创建 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); }
}

根据 MSDN,限制性访问修饰符实际上并不提供某些 API 的预期访问保护,因此声明依赖属性及其标识符字段除了public:

依赖属性安全注意事项

依赖属性应声明为公共属性。依赖属性标识符字段应声明为公共静态字段。即使您尝试声明其他访问级别(例如 protected),也始终可以通过标识符结合属性系统 API 来访问依赖属性。由于元数据报告或值确定 API 是属性系统的一部分,因此即使受保护的标识符字段也可能被访问,例如本地值枚举器。有关更多信息,请参阅依赖财产安全.

将它们暴露为没有任何害处public无论如何,我会聚集。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么将 DependencyProperty 成员声明为 public 而不是 protected? 的相关文章

随机推荐