为什么 EditorBrowsableState.Never 存在

本文关键字:存在 Never EditorBrowsableState 为什么 | 更新日期: 2023-09-27 18:32:45

System.ComponentModel 命名空间中存在一个 EditorBrowsableAttribute。EditorBrowsableState 类型具有以下成员:

  • 高深
  • 总是
  • 从不

这个烦人的属性可能是什么原因?尤其是国家从不。它隐藏了功能,然后当你发现它时,你会觉得使用它很脏。因此,如果您在Microsoft工作并实现了这个类,请告诉我... :)

我能想象到这个属性唯一有意义的情况是,当你想将某些东西标记为过时并将其隐藏在智能感知中以更好地集中注意力时。但是在所有情况下,我都遇到此属性在没有过时属性的情况下使用。我发现的最新示例是在 wpf 中的 Dispatcher.CheckAccess(( 方法。

为什么 EditorBrowsableState.Never 存在

IMO 是一个专门用于在 VS 解决方案内部构建库的属性(当依赖项不是外部时(,智能感知将简单地忽略它。有用的用例很少。

让我们先看看EditorBrowsableState.Advanced:对于某些语言(特别是 VB.NET(,您可以指示IDE(实际上是Intellisense(隐藏高级成员,以便您只看到最常见的方法。对于非常初学者来说,噪音更少(当您更好地掌握 BCL 并且不会被大量晦涩难懂的方法所迷惑时,您可以启用全视图(。

EditorBrowsableState.Never还有其他用法。

  • 一个是你说的(隐藏已弃用的过时方法(。一个例子是旧的Form.Closing事件(隐藏,因为被Form.FormClosing替换和扩展(。
  • 另一个是隐藏错误和拼写错误。例如,如果该属性适用于Keys.HanguelMode则拼写错误将不可见(但为了兼容性而存在(。
  • 如果需要向其他程序集公开一些安全的内部方法,它也很有用。您不会用这些方法污染您的库接口(您可以将它们记录下来并仅供内部使用(。这可能比通过带有InternalsVisibleToAttribute友元程序集公开所有内部细节要好。
  • 您可以使用它来隐藏潜在的危险方法。您提供它们是因为有人可能需要它们,但您希望阻止人们使用它们,如果可能的话。

EditorBrowsableState 属性主要用于可视化设计器。EditorBrowsableState.Never 适用于设计器图面中使用的 UI 小组件或自定义控件的某些属性与可视化设计方面无关或不适合的情况。