c# - 如何在界面中配置代码契约

标签 c# interface code-contracts

我无法在类里面配置代码契约。我已按照文档和示例进行操作,但它不起作用。

我想在我的界面中插入代码契约条件,这里是我的代码

界面

 [ContractClass(typeof(ArticleBLLContract))]
 public interface IArticleBLL
 {
    int getArticleNSheet(string IdBox);
    IEnumerable<IArticle> getArticleValue(string IdBox, string IdLanguage);
}

合约类

[ContractClassFor(typeof(IArticleBLL))]
public sealed class ArticleBLLContract : IArticleBLL
{
    int IArticleBLL.getArticleNSheet(string IdBox)
    {
        Contract.Requires<ArgumentOutOfRangeException>(!String.IsNullOrEmpty(IdBox),"IdBox has no valid value");                        

        return default(int);
    }

    IEnumerable<Base.Article.IArticle> IArticleBLL.getArticleValue(string IdBox, string IdLanguage)
    {
        Contract.Requires<ArgumentOutOfRangeException>(!String.IsNullOrEmpty(IdBox), "IdBox has no valid value");
        Contract.Requires<ArgumentOutOfRangeException>(!String.IsNullOrEmpty(IdLanguage), "IdLanguagehas no valid value");

        Contract.Ensures(Contract.Result<IEnumerable<Base.Article.IArticle>>() != null, "Return value is out of Range");

        return default(IEnumerable<Base.Article.IArticle>);
    }        
}

申请合约的类

public class ArticleBLL : IArticleBLL
{

    public int getArticlNSheet(string IdBox)
    {
        try
        {
            return _Dal...
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    public IEnumerable<IArticle> getArticleValue(string IdBox, string IdLanguage)
    {
        IEnumerable<IArticle> article = null;

        try
        {
            article = _Dal...

            return article;

        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
}

我试图在这一行中插入一个断点

Contract.Requires<ArgumentOutOfRangeException>(!String.IsNullOrEmpty(IdBox),"IdBox has no valid value");  

但是当我调用这个方法时它从不通过这里 这是我的项目配置 Code Contracts Config

有什么问题吗?

谢谢!

最佳答案

您配置中的汇编模式应为“标准契约(Contract)要求”。

关于c# - 如何在界面中配置代码契约,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5635163/

相关文章:

java - 难以理解具有嵌套函数的 Java 实现(并用 C++ 对其进行编码)

c# - 代码契约(Contract)。 "always evaluates to a constant value"警告的错误编号

entity-framework - 使用 EF Code First 示例编写契约(Contract)和 Fluent API

C# 设计器 : Removing redundant code from Design. cs

c# - 如何用伪代码写前置条件

performance - 快速的,抽象类或接口(interface)是哪一个?

unit-testing - 我可以使用嵌套界面模拟库代码吗?

c# - 在一个属性中使用代码契约来提供关于另一个属性的提示

c# - 为什么 C++ 和 C# 对 double 类型有不同的最大值的解释?

c# - 泛型:强制转换和值类型,为什么这是非法的?