有没有办法让Resharper像Debug.Assert一样处理Trace.Assert?

Lor*_*tel 7 c# resharper

它理解如果断言是假的,Debug.Assert将抛出而不是继续,因此它知道断言在此之后是真的.

我想跟Trace.Assert一样的推理.是的,你可以继续,如果你继续经过这样一个警告,然后抛出一个空的那就是你的问题.我想摆脱那些虚假的可能的空引用消息.

ulr*_*chb 8

我刚刚在ReSharper 9.1.3中使用以下示例代码对此进行了测试.

private void M(string a)
{
    Trace.Assert(a != null); // or Debug.Assert(a != null);

    if (a == null)
        Console.WriteLine("a is null");
}
Run Code Online (Sandbox Code Playgroud)

R·汇报了Debug.Assert()Trace.Assert()Console.WriteLine()电话是"试探性地无法访问".出现这种情况,因为这两种方法都在ReSharper的注解外部注解[ContractAnnotation("condition:false=>halt")](您可以通过敲击的方法,按Ctrl + Shift + F1并点击看到这个"[...]").

你有哪个版本的ReSharper /外部注释包?

顺便说一句:condition:false=>halt注释不是真的正确,因为a)你可以在DefaultTraceListener消息框中点击"忽略" 并继续执行b)它取决于Trace.Listeners配置(例如,如果你调用Trace.Listeners.Clear()或设置AssertUiEnabled属性为false,消息框将不会出现).