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