System.NullReferenceException:...在C#中

时间:2013-10-19 19:15:29

标签: c# reflection

以下是代码:

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; }
        }

我无法弄清楚这一点。如果任何人能够或了解正在发生的事情,请帮助我们!在此先感谢!!!

2 个答案:

答案 0 :(得分:1)

propertyItself变量为空。

这意味着此调用在某种程度上是不正确的:

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

我只是猜测,但我敢打赌,如果这是一个选项,则代码property.GetType().Name应为property.ToString()property.Name

您传入的内容是property的类型名称,而不是Name

答案 1 :(得分:0)

没有任何调试器信息,就无法给出错误的具体答案。

尝试放

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

这将检查可能在该行上爆炸的两个项目。

或试试这个

        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; }
            }
         }