首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >net core如何处理Arg.NotNull和Contract.Requires资产?

net core如何处理Arg.NotNull和Contract.Requires资产?
EN

Stack Overflow用户
提问于 2019-02-18 18:15:01
回答 2查看 434关注 0票数 0

aspnet-api-versioning中,我发现了一个码块:

代码语言:javascript
复制
DefaultApiControllerFilter( IEnumerable<IApiControllerSpecification> pecifications )
        {
            Arg.NotNull( specifications, nameof( specifications ) );
            this.specifications = specifications.ToArray();
        }

感兴趣的块是来自Microsoft名称空间的Arg.NotNull( value, "text" );

并且在代码中有几个类似的断言。另一个例子是来自System.Diagnostics.ContractsContract.Requires()

已尝试搜索有关工作原理的Microsoft文档,但未找到相关信息。

因此,也许可以帮助了解它是如何工作的:像postsharp代码重写一样,提供运行时条件检查作为Debug.Assert,或者可能只是抛出异常(但它在文档中没有提到)?

EN

回答 2

Stack Overflow用户

发布于 2019-02-18 18:48:01

票数 1
EN

Stack Overflow用户

发布于 2019-02-18 20:03:50

下载库源代码后,编译并查看编译后的代码,发现Microsoft::Arg只是一个带有方法的shared code project

代码语言:javascript
复制
internal static void NotNull<T>(T value, string name) where T : class 
    {
      if ((object) value == null)    throw new ArgumentNullException(name);
    }

Contract.Requires(condition)是一个Code Contract Assert代码生成扩展,由于没有assert post build事件,它不会生成任何代码。The similar sutuation on stackowerflow

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54744884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档