我正在创建一个内部类来为契约模式提供一个构造。
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中将这些选项看作是:
这是令人困惑的,我想知道是否有一种方法可以隐藏Equals和ReferenceEquals。
注意:我已经试过了,但它对我没有用:
[EditorBrowsable(EditorBrowsableState.Never)]
public override bool Equals(object obj)
{
return base.Equals(obj);
}发布于 2010-08-03 14:53:44
使用:
[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,他们将不适当地使用它。
发布于 2010-08-03 14:42:35
要添加到Matti的答案中,EditorBrowsableState.Never取决于用户在选项、文本编辑器、C#、General下面的Visual设置。
只有当用户打开“隐藏高级成员”时,它才会生效。Visual默认显示所有成员。
https://stackoverflow.com/questions/3397569
复制相似问题