Search code examples
c#.netconstructorfxcopca1062

CA1062: ValidateArgumentsOfPublicMethods on co-constructor calls


I have a class with two constructors that look like this:

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

When I run FxCop, it correctly reports a violation of CA1062: ValidateArgumentsOfPublicMethods, because if source is null in the first constructor, it will throw a NullReferenceException on source.Name.

Is there any way to fix this warning?

I could make an extension method that checks for null and returns its argument, but it would be ugly. Also, as I understand, it wouldn't resolve the warning because FxCop wouldn't realize what it does.


Solution

  • Like this?

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