0

これはかなり基本的な質問だと思いますが、私の脳はまだ目覚めていないか、単に太っているだけです!

以下に定義された文字列のコレクションのプロパティを持つクラスがあります(名前は簡略化されています)

public class IdentifierCollection : BaseSubCollection, IIdentifierCollection
{
    public string Id1{ get; set; }
    public string Id2{ get; set; }
    public string Id3{ get; set; }
    // ...      
}

保存する前にプロパティのいずれかに実際に値があるかどうかを確認したいので、現在このようなことをしています...

if (string.IsNullOrEmpty(primaryObj.Identifiers?.Id2) &&
    string.IsNullOrEmpty(primaryObj.Identifiers?.Id2) &&
    string.IsNullOrEmpty(primaryObj.Identifiers?.Id3) &&
    string.IsNullOrEmpty(primaryObj.Identifiers?.Id4) &&
    string.IsNullOrEmpty(primaryObj.Identifiers?.Id5) &&
    string.IsNullOrEmpty(primaryObj.Identifiers?.Id6) &&
    string.IsNullOrEmpty(primaryObj.Identifiers?.Id7) &&
    string.IsNullOrEmpty(primaryObj.Identifiers?.Id8))
{

}

これを入力するだけで気分が悪い!! もっと良い方法があるはず...

4

1 に答える 1

1

この種のプロパティチェックに問題はないと思います。プロパティを反復処理できるようにするためだけに、リフレクションを使用したり、何らかのインターフェイスを実装したりすることは、私にはやり過ぎのように見えます。このような長いステートメントが条件付きチェックとしてぎこちなく見えることに同意しますが。コードを読みやすくするために、このチェックを別のプライベート メソッドに抽出します。

if (NoPropIsNullOrEmpty())
{
}

private bool NoPropIsNullOrEmpty()
{
    return !(string.IsNullOrEmpty(primaryObj.Identifiers?.Id2) ||
             string.IsNullOrEmpty(primaryObj.Identifiers?.Id2) ||
             string.IsNullOrEmpty(primaryObj.Identifiers?.Id3) ||
             string.IsNullOrEmpty(primaryObj.Identifiers?.Id4) ||
             string.IsNullOrEmpty(primaryObj.Identifiers?.Id5) ||
             string.IsNullOrEmpty(primaryObj.Identifiers?.Id6) ||
             string.IsNullOrEmpty(primaryObj.Identifiers?.Id7) ||
             string.IsNullOrEmpty(primaryObj.Identifiers?.Id8));
}
于 2016-02-25T11:38:43.820 に答える