合同无效

Contract doesn't work

我遇到了 System.Diagnostics.Contracts 的问题。

如果我使用 Contract.Requires(condition),那么一切都会按预期工作。 但是我需要一个自定义异常,所以我尝试了 Contract.Requires<ToShortException>(condition).

condition 为假时,我期待 ToShortException 但我什么也没得到。在我可以看到的调试器中,这一行被忽略了。

ToShortException 是一个 public class,它实现了 Exception 并且有 3 个 public 构造函数。

有人知道我做错了什么吗?

异常class:

public class ToShortException : Exception
{
    public ToShortException()
    {
    }

    public ToShortException(string message) : base(message)
    {
    }

    public ToShortException(string message, Exception inner) : base(message, inner)
    {

    }
}

方法class:

    public IDictionary<string, string> getIncident(string name)
    {
        Contract.Requires(!string.IsNullOrWhiteSpace(name)); //works fine
        Contract.Requires<ToShortException>(name.Length == 7); //got not checked

        return _original.getIncident(name);
    }

我找到了解决方案。 "Project Settings -> Code Contracts -> Assembly Mode" 必须是 "Standard Contract Requires".

默认值为 "Custom Parameter Validation"。