代码之家  ›  专栏  ›  技术社区  ›  Lasse V. Karlsen

在Visual Studio for C_中隐藏从Fluent接口类IntelliSense中获取的GetHashCode/Equals/ToString?

  •  21
  • Lasse V. Karlsen  · 技术社区  · 16 年前

    我有一个用于IOC容器注册过程的流畅接口,其中包含一些用于构建注册的类。

    例如,我可以这样做:

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

    但是,在点后面的每个步骤中,IntelliSense都会弹出,显示对象类、GetHashCode、Equals、GetType和ToString中的四个标准方法。

    我尝试在几个类中重写这些方法,并附加 EditorBrowsableAttribute 每个属性,但它们仍然会显示出来。我没办法把它们藏起来吗?

    请注意,我并不是试图从类本身隐藏它们,只是从IntelliSense隐藏它们。

    基本上,我希望:

                             +---------------+
    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 然后对它应用相同的属性,这也会出现,所以很明显,该属性并没有像我想象的那样做。

    我注意到文档中关于不从同一程序集中隐藏内容的注释,但我尝试创建一个新项目,但它们仍然会出现在那里。

    2 回复  |  直到 13 年前
        1
  •  18
  •   Helgi    13 年前

    根据 thread ,这是设计的。装饰方法/属性 EditorBrowsable(EditorBrowsableState.Never) 仅当它们是另一个引用程序集中的类的一部分时才对IntelliSense隐藏。程序集不应是同一解决方案的一部分。

        2
  •  21
  •   Lasse V. Karlsen    16 年前

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

    我的错误是我没有在正确的类中标记所有的方法,但是即使在纠正它的时候,这些方法仍然出现。

    文档中的注释如下:

    在Visual C_中,editorbrowableattribute不禁止来自同一程序集中类的成员。

    应该是(强调我的):

    在Visual C_中,editorbrowableattribute不禁止来自同一类的成员 开放式解决方案 .

    我在适当的类中标记了方法,进行了完整的重建,在解决方案文件之外创建了一个新项目,对我的IOC项目中编译的文件进行了文件引用,结果发现,这些方法消失了。

    如果有人有这个问题,我会把问题留下来。