c# - CA1062:共同构造函数调用上的 ValidateArgumentsOfPublicMethods

标签 c# .net constructor fxcop ca1062

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

public MyClass(SomeOtherClass source) : this(source, source.Name) { }
public MyClass(SomeOtherClass source, string name) { /* ... */ }

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

有什么办法可以解决这个警告吗?

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

最佳答案

像这样?

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

关于c# - CA1062:共同构造函数调用上的 ValidateArgumentsOfPublicMethods,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1059654/

相关文章:

c# - List<T> 真的是 C# 中的隐蔽数组吗?

c# - {} 表达式的含义

.net - 多重触发的否定或非条件元素

c# - 如何在 NHibernate 中查询多对多关系

c# - 'this'关键字是否可以等于null?

.net - ImmutableObject 属性有什么好处?

c# - 如何使用 Visual Studio Code 创建 C# 项目?

java - Java 中是否有一种使用构造函数参数快速分配多个类变量的方法?

c++ - 分配内存以调整堆栈大小的问题

javascript - 构造函数第二次失败,但不是第一次