Luc*_*s B 5 c# intellisense visual-studio-2008
我正在创建一个内部类来为 Contract 模式提供一个构造。
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");
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
当开发人员开始使用它时,他们将在 Intellisense 中看到这些选项:
这令人困惑,我想知道是否有办法隐藏 Equals 和 ReferenceEquals。
注意:我已经尝试过这个,但它对我不起作用:
[EditorBrowsable(EditorBrowsableState.Never)]
public override bool Equals(object obj)
{
return base.Equals(obj);
}
Run Code Online (Sandbox Code Playgroud)
使用:
[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");
}
Run Code Online (Sandbox Code Playgroud)
如果开发人员设置了适当的 VS 设置,这将隐藏成员,并且在运行时期间,如果开发人员无意中在代码库中使用了 Equals 或 ReferenceEquals,则会立即通知开发人员他们不恰当地使用了 Equals 或 ReferenceEquals。
归档时间: |
|
查看次数: |
2858 次 |
最近记录: |