该IHideObjectMembers
技巧(又名IFluentInterface
)可用于例如流畅的接口实现中以隐藏System.Object
IntelliSense 的成员。(如果你不知道这个技巧,你可以通过上面的链接阅读它;我只是在这里重复接口的通常声明:)
using System;
using System.ComponentModel;
[EditorBrowsable(EditorBrowsableState.Never)]
public interface IHideObjectMembers
{
[EditorBrowsable(EditorBrowsableState.Never)] bool Equals(object obj);
[EditorBrowsable(EditorBrowsableState.Never)] int GetHashCode();
[EditorBrowsable(EditorBrowsableState.Never)] Type GetType();
[EditorBrowsable(EditorBrowsableState.Never)] string ToString();
}
我现在应该能够隐藏System.Object
另一种类型的成员,如下所示:
public class SomeClass : IHideObjectMembers { ... }
或者:
public interface ISomeInterface : IHideObjectMembers { ... }
我在 VS 2008 Express 和 VS 2008 Standard 中都试过这个。但是,没有任何成员对 IntelliSense 隐藏。我EditorBrowsableAttribute
在不同的项目中使用过它,它总是运行良好;但是,它在这种特定情况下不起作用。
如果事情按预期进行,我只会看到该SomeMethodTwo
方法。
我错过了什么吗?
PS:您可以从声明和屏幕截图中推断出我的示例代码。我有一个SomeClass
带有单个虚拟方法的类,称为SomeMethodTwo
. 很简单。我没有在这个类中重新实现这四个System.Object
方法,因为这不是必需的。