我正在重构一些代码,并添加了一个方法,该方法将替换(即将被弃用的)方法。新方法具有以下签名:

FooResult Foo(FooArgs args) { ... }

不推荐使用的方法包含越来越多的参数。这些参数现在是FooArgs类的属性。不建议使用的方法具有几个保护条件,这些保护条件使用以下结构检查空值:
if (parameter1 == null)
    throw new ArgumentNullException(“parameter1”);
if (parameter... == null)
    throw new ArgumentNullException(“parameter...”);
if (parameterN == null)
    throw new ArgumentNullException(“parameterN”);

现在,参数已折叠到FooArgs类中,我应该为FooArgs参数的各个属性抛出 ArgumentNullException :
if (args.Property1 == null)
    throw new ArgumentNullException(“args.Property1”);
if (args.Property... == null)
    throw new ArgumentNullException(“args.Property...”);
if (args.PropertyN == null)
    throw new ArgumentNullException(“args.PropertyN”);

或者为整个 FooArgs参数的抛出更通用的 ArgumentException :
if (args.Property1 == null)
    throw new ArgumentException(“Property1 cannot be null.”, “args”);
if (args.Property... == null)
    throw new ArgumentException(“Property... cannot be null.”, “args”);
if (args.PropertyN == null)
    throw new ArgumentException(“Property2 cannot be null.”, “args”);

谢谢!

最佳答案

您需要为args本身添加非null的检查。 ANE不适用于单个组件,因此您需要使用更通用的AE,如下所示:

if (args == null)
    throw new ArgumentNullException(“args”);
if (args.Property1 == null)
    throw new ArgumentException(“Property1 cannot be null.”, “args”);
if (args.Property... == null)
    throw new ArgumentException(“Property... cannot be null.”, “args”);
if (args.PropertyN == null)
    throw new ArgumentException(“Property2 cannot be null.”, “args”);

关于c# - ArgumentException与ArgumentNullException?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8459755/

10-12 00:27