隐藏的GetHashCode /的Equals在Visual Studio的C#从流畅的接口类智能感

2019-08-16 16:35发布

我有IoC容器登记处理的连贯接口,这包含用于以建立注册一些类。

举例来说,我可以这样做:

builder.Register<IFoo>().From.ConcreteType<Foo>();

然而,在一个点之后的每个步骤中,智能感知弹出表示从对象类,GetHashCode的,等于的GetType和toString四个标准方法。

我试图在一类的重写这些方法,安装EditorBrowsableAttribute属性各,但他们仍然显示。 难道就没有办法对我来说,隐藏起来?

请注意,我不试图从类本身隐藏起来,刚刚从智能感知。

基本上,我想这样的:

                         +---------------+
builder.Register<IFoo>().|As             |
                         |By             |
                         |Equals         | <-- remove this
                         |From           |
                         |GetHashCode    | <-- and this
                         |GetType        | <-- as well as this
                         |ToString       | <-- and finally this
                         +---------------+

下面是我在从返回的类试图Register<T>

[EditorBrowsable(EditorBrowsableState.Never)]
public override Boolean Equals(Object obj)
{
    return base.Equals(obj);
}

[EditorBrowsable(EditorBrowsableState.Never)]
public override Int32 GetHashCode()
{
    return base.GetHashCode();
}

[EditorBrowsable(EditorBrowsableState.Never)]
public override String ToString()
{
    return base.ToString();
}

这显然没有奏效。 还有什么我可以试试吗?

我也尝试添加了新的方法,而不是覆盖Object ,并采用相同的属性,这一点,太显示出来,这么清楚的属性没有做什么,我认为这会做。

我注意到备注不是来自同一个组件藏东西的文档中,但我试图创建一个新的项目,他们仍然出现在那里。

Answer 1:

根据线索 ,它是由设计。 该方法/属性饰EditorBrowsable(EditorBrowsableState.Never)如果他们一类是在另一个引用组件的部分只能从智能感知隐藏。 该组件不应该是相同的解决方案的一部分。



Answer 2:

好吧,我找到了解决办法,这部分是我的错,一部分不完整的文档。

我错了,我没有标记在正确的类的所有方法,但即使纠正时,该方法还是出现了。

原来的文件,其内容的说明:

在Visual C#,EditorBrowsableAttribute不禁止从类成员在同一程序。

实际上应该是(重点煤矿):

在Visual C#,EditorBrowsableAttribute不禁止从类成员在同一个开放式解决方案

我标记在适当的类中的方法,做了全面的重建,创造了一个新的项目的解决方案文件外,从我的IOC项目作出编译后的文件的文件引用,你瞧,这些方法就消失了。

我会在情况下别人有这个问题留下了问题。



文章来源: Hiding GetHashCode/Equals/ToString from fluent interface classes intellisense in Visual Studio for C#?