一个自动测试方法参数并为.net/VS抛出ArgumentNullException的工具?

Ras*_*sto 1 .net c# annotations exception visual-studio

当我编写代码时,我有这种奇怪的习惯,用代码抛出这样的异常就可以启动我的方法

public WhateverType MethodName(CrazyObjectType crazyObject, string para2){
    if(crazyObject == null){
        throw new ArgumentNullException("crazyObject");
    }
    if(param2 == null){
        throw new ArgumentNullException("param2");
    }
    if(para2.Lenght > 32){
        throw new ArgumentOutOfBoundsException("para2");
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

考虑一些方法有6个参数,其中不允许为null,其中一些是可能不为空或长于某个值的字符串.你可以想象,在我得到实际的方法逻辑之前,我写了很多代码+我的类将更难阅读.

是否有任何工具/ VS插件/ Resharper插件/注释/代码片段,以便我不必编写所有这些重复的代码?

理想的解决方案是一些声明性注释,例如:

[NotNull("crazyObject, param2")] [StringLenght("para2", 0, 32)]
public WhateverType MethodName(CrazyObjectType crazyObject, string para2){
    ...
}
Run Code Online (Sandbox Code Playgroud)
  • 一些VS/Resharper插件,允许折射这样的参数,所以当我重命名/折射时,一些参数注释会自动同步?

而且我的理想图像更进一步,我想我可以使用GUI来自动化进程,以便我选择方法点击某处,检查一些不应该为null的参数的复选框,并为我生成注释.

这样的事情存在吗?


注意:我想我总是可以创建代码片段来生成代码,但声明性方法和GUI生成器会更好.


编辑:说"考虑一些方法有6个参数"只是一个例子 - 我不认为我有很多这样的方法.相反,我应该写"考虑你有很多方法可以投入3-4 ArgumentException秒".

编辑2:不好的术语.我意识到我在这个问题中到处称之为"注释",如果我从.NET类中正确地记住它,我的注释应该可能在.NET中被称为"属性".

Jon*_*eet 6

虽然它不是严格声明,但我认为你应该看看Code Contracts.

对于一个奇怪的,并没有真正推荐的使null参数测试更便宜的方法,请看一下这篇博客文章.这不仅涵盖了空参数检查虽然-没有其他种类的有效性.

顺便说一句,只是执行参数验证的方法的第一部分没什么奇怪的.这完全合情合理.

  • @drasto:如果注释在参数名称之前是`[NotNull]`的形式,我想我宁愿输入(并且在`[No`之后]使用Intellisense,而不是将我的手从键盘移开到鼠标等 (2认同)