以下是代码:
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; }
}
我无法弄清楚这一点。如果任何人能够或了解正在发生的事情,请帮助我们!在此先感谢!!!
答案 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; }
}
}