首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hide等于和ReferenceEquals

Hide等于和ReferenceEquals
EN

Stack Overflow用户
提问于 2010-08-03 14:35:56
回答 2查看 3.1K关注 0票数 5

我正在创建一个内部类来为契约模式提供一个构造。

代码语言:javascript
复制
using System;
using System.Runtime.Serialization;

namespace DCS2000.Common35.Core
{
  public class Assertion
  {
    public static void Ensure(bool test)
    {
        if (!test)
        {
            throw new PreconditionException("Precondition test failed");
        }
    }

    public static void Ensure(object obj)
    {
        if (obj == null)
        {
            throw new PreconditionException("Precondition null object failed");
        }
    }

    public static void Require(bool test)
    {
        if (!test)
        {
            throw new PostconditionException("Postcondition test failed");
        }
    }

    public static void Require(object obj)
    {
        if (obj == null)
        {
            throw new PostconditionException("Postcondition null object failed");
        }
    }
  }
}

当开发人员使用它时,他们将在Intellisense中将这些选项看作是:

  • Ensure
  • Equals
  • ReferenceEquals
  • Require

这是令人困惑的,我想知道是否有一种方法可以隐藏Equals和ReferenceEquals。

注意:我已经试过了,但它对我没有用:

代码语言:javascript
复制
    [EditorBrowsable(EditorBrowsableState.Never)]
    public override bool Equals(object obj)
    {
        return base.Equals(obj);
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-03 14:53:44

使用:

代码语言:javascript
复制
    [EditorBrowsable(EditorBrowsableState.Never)]
    public override bool Equals(object obj)
    {
        throw new Exception("Assertion does not implement Equals, use Ensure or Require");
    }

    [EditorBrowsable(EditorBrowsableState.Never)]
    public new bool ReferenceEquals(object objA, object objB)
    {
        throw new Exception("Assertion does not implement ReferenceEquals, use Ensure or Require");
    }

这将隐藏成员,如果开发人员有适当的VS设置,并将立即通知(唉,在运行时)开发人员,如果他们无意中在代码库中使用等于或ReferenceEquals,他们将不适当地使用它。

票数 4
EN

Stack Overflow用户

发布于 2010-08-03 14:42:35

要添加到Matti的答案中,EditorBrowsableState.Never取决于用户在选项、文本编辑器、C#、General下面的Visual设置。

只有当用户打开“隐藏高级成员”时,它才会生效。Visual默认显示所有成员。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3397569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档