为什么存在EditorBrowsableState.Never?

时间:2014-12-02 15:55:41

标签: c# visual-studio intellisense

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

  • 高级
  • 始终
  • 从不

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

我能想象的唯一一个例子就是这个属性是有意义的,当你想要将某些东西标记为过时并将其隐藏在intellisense中以便更好地聚焦时。但在我遇到的所有情况下都使用了这个属性而没有过时的属性。我发现的最新例子是在wpf中使用Dispatcher.CheckAccess()方法。

2 个答案:

答案 0 :(得分:7)

IMO是一个专门用于构建库的属性,在VS解决方案内部(当依赖关系不是外部的时),Intellisense将忽略它。有用的用例很少。

让我们首先看一下EditorBrowsableState.Advanced:使用某些语言(特别是VB.NET),你可以指示IDE(实际上是Intellisense)隐藏高级成员,这样你就可以了只看到最常见的方法。对于初学者来说,减去 noise (当你掌握BCL的时候,你可以启用全视图,并且你不会被大量模糊的方法所暗示)。

EditorBrowsableState.Never还有其他用法。

  • 一个是你所说的(隐藏已弃用的过时方法)。一个例子是 Form.Closing事件(隐藏,因为Form.FormClosing替换和扩展)。
  • 另一个是隐藏错误错别字。如果该属性适用于,例如Keys.HanguelMode,那么拼写错误就不可见了(但是为了兼容性而存在)。
  • 如果您需要将少量安全内部方法暴露给其他程序集,这也可能很有用。您不会使用这些方法污染您的库接口(您可以记录它们并将它们保留为仅供内部使用)。这可能比通过 friend 程序集使用InternalsVisibleToAttribute公开所有内部详细信息更好。
  • 您可以使用它来隐藏潜在危险的方法。你提供它们是因为某人可能需要它们但你想阻止人们使用它们,如果可能的话。

答案 1 :(得分:-1)

EditorBrowsableState属性主要用于Visual Designers。 EditorBrowsableState.Never适用于设计器表面中使用的UI Widget或Custom Control的某些属性与视觉设计方面无关或不适合的情况。