在Stult.组件模型命名空间中存在一个EditorBrowsableAttribute。类型EditorBrowsableState具有以下成员:
高级的
总是
从未
为什么会有这种恼人的属性?尤其是国家从来没有。它隐藏了功能,当你发现它时,你会觉得使用它很肮脏。所以如果你在微软工作并且实现了这个类,请告诉我PLZ…:)
我能想象这个属性唯一有意义的情况是,当你想将某个东西标记为过时的,并将其隐藏起来以更好地集中注意力时。但在所有情况下,我都会遇到这个属性是在没有过时属性的情况下使用的。我发现的最新示例是wpf中的dispatcher.checkaccess()方法。
最佳答案
imo是一个专门用于构建库的属性,在vs解决方案内部(当依赖关系不是外部的时),intellisense将简单地忽略它。很少有有用的用例。
让我们先看看EditorBrowsableState.Advanced
:对于某些语言(特别是vb.net),您可以指示ide(实际上是intellisense)隐藏高级成员,这样您将只看到最常见的方法。对于初学者来说噪音更小(当你更好地掌握了BCL并且你没有被大量晦涩的方法所暗示的时候,你可以启用全视图)。EditorBrowsableState.Never
还有其他用法。
一个是你所说的(隐藏不推荐的过时方法)。一个例子是oldForm.Closing
事件(隐藏,因为被Form.FormClosing
替换和扩展)。
另一个是隐藏错误和打字错误。例如,如果该属性适用于Keys.HanguelMode
,那么typo将不可见(但出于兼容性考虑)。
如果需要向其他程序集公开少量安全的内部方法,则它也可能很有用。你不会用那些方法污染你的库接口(你可以把它们记录下来,并且只作为内部使用)。这可能比使用InternalsVisibleToAttribute
通过友元程序集公开所有内部细节要好。
你可以用它来隐藏潜在的危险方法。你提供它们是因为有人可能需要它们,但如果可能的话,你想阻止人们使用它们。