CA1062:关于共同构造函数调用的ValidateArgumentsOfPublicMethods

SLa*_*aks 8 .net c# constructor fxcop ca1062

我有一个包含两个构造函数的类,如下所示:

public MyClass(SomeOtherClass source) : this(source, source.Name) { }
public MyClass(SomeOtherClass source, string name) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

当我运行的FxCop,它正确地报告违反CA1062:ValidateArgumentsOfPublicMethods,因为如果sourcenull在第一个构造函数,它会抛出一个NullReferenceExceptionsource.Name.

有没有办法解决这个警告?

我可以创建一个检查null并返回其参数的扩展方法,但它会很难看.此外,据我所知,它不会解决警告,因为FxCop不会意识到它的作用.

arb*_*ter 10

像这样?

public MyClass(SomeOtherClass source) : this(source, source == null ? null : source.Name) { }
public MyClass(SomeOtherClass source, string name) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)