-2

コードは次のとおりです。

foreach (var property in this.allProperties)
        {
            var propertyItself = element.GetType().GetProperty(property.GetType().Name);

            if (propertyItself.PropertyType != typeof(Int32)) // Here I get System.NullReferenceException: Object reference not set to an instance of an object
            { continue; }

            if ((int)propertyItself.GetValue(element, null) == 0)
            { return false; }
        }

私はこれを理解することはできません。誰かが何が起こっているのか理解できる、または理解できる場合は、私たちを助けてください! 前もって感謝します!!!

4

2 に答える 2

1

propertyItself変数がヌルです。

つまり、この呼び出しは何らかの理由で間違っています。

element.GetType().GetProperty(property.GetType().Name);

私は推測していますが、このコードproperty.GetType().Nameはそうあるべきproperty.ToString()property.Name、それがオプションである場合に賭けます。

あなたが渡しているのは、propertyその ではなく、の Type の名前ですName

于 2013-10-19T19:21:58.370 に答える
0

デバッガー情報がなければ、何が問題なのか特定の答えを出す方法はありません。

入れてみて

if(propertyIteself!=null && propertyIteslef.PropertyType!=null && propertyItself.PropertyType != typeof(Int32)) 
 { continue; }

これにより、その行で爆発する可能性のある両方のアイテムが null チェックされます。

またはこれを試してください

        foreach (var property in this.allProperties)
        {
          var propertyItself = element.GetType().GetProperty(property.GetType().Name);
          if(propertyItself!=null && propertyItself.PropertyType!=null)
           {
                if (propertyItself.PropertyType != typeof(Int32)) 
                { continue; }

                if ((int)propertyItself.GetValue(element, null) == 0)
                 { return false; }
            }
         }
于 2013-10-19T19:19:27.710 に答える