public MyClass(SomeOtherClass source) : this(source, source.Name) { } public MyClass(SomeOtherClass source, string name) { /* ... */ }
8
1
このような2つのコンストラクタを持つクラスがあります。
public MyClass(SomeOtherClass source) : this(source, source.Name) { } public MyClass(SomeOtherClass source, string name) { /* ... */ }
FxCopを実行すると、http://msdn.microsoft.com/en-us/library/ms182182.aspx [CA1062:ValidateArgumentsOfPublicMethods]の違反が正しく報告されます。これは、最初の `+ source `が ` null `の場合コンストラクターは、 ` source.Name `に対して ` NullReferenceException +`をスローします。
この警告を修正する方法はありますか?
nullをチェックしてその引数を返すような拡張メソッドを作ることもできますが、それは醜いでしょう。 また、私が理解しているように、FxCopはそれが何をするのか理解していないので、それは警告を解決しないでしょう。
3 Answer
10
このような?
公開MyClass(SomeOtherClassのソース):これ(ソース、ソース== null? null:source.Name){} public MyClass(SomeOtherClassソース、文字列名){/ * ... * /}
1
FxCopの警告を無効にする正当な時間があり、これは1つの可能性がありますが、nullをチェックして例外をスローする(またはデフォルト値を代入する)3項式、またはstaticの呼び出しによって問題を解決できます。 nullをチェックして適切な例外をスローするメソッド。
0
私はこの警告を修正する唯一の方法はそれをオフにすることであろうと言うでしょう。 FxCopは素晴らしいツールですが、それは単なるツールであり、常に自分のコードに適していないという提案をする可能性があることを忘れないでください。
この例では、警告を無視するか、表示したくない場合は無効にします。