1. ホーム
  2. c#

[解決済み] オブジェクトのすべてのプロパティをnullまたはemptyでチェックするには?

2023-07-20 17:09:27

質問

あるオブジェクトがあります。 ObjectA

で、このオブジェクトは10のプロパティを持っていて、それらはすべて文字列です。

 var myObject = new {Property1="",Property2="",Property3="",Property4="",...}

は、これらのプロパティがすべてnullまたは空であるかどうかを確認する方法はありますか?

では、trueまたはfalseを返すような組み込みのメソッドはありますか?

1つでもNULLや空でないものがあれば、falseを返します。すべて空であればtrueを返すはずです。

これらのプロパティが空かヌルかを制御するために、10個のif文を書きたくないということです。

ありがとうございます。

どのように解決するのですか?

Reflectionを使用することができます。

bool IsAnyNullOrEmpty(object myObject)
{
    foreach(PropertyInfo pi in myObject.GetType().GetProperties())
    {
        if(pi.PropertyType == typeof(string))
        {
            string value = (string)pi.GetValue(myObject);
            if(string.IsNullOrEmpty(value))
            {
                return true;
            }
        }
    }
    return false;
}

Matthew WatsonはLINQを使った代替案を提案しました。

return myObject.GetType().GetProperties()
    .Where(pi => pi.PropertyType == typeof(string))
    .Select(pi => (string)pi.GetValue(myObject))
    .Any(value => string.IsNullOrEmpty(value));