Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 反射GetValue null属性_C#_.net_Null_System.reflection - Fatal编程技术网

C# 反射GetValue null属性

C# 反射GetValue null属性,c#,.net,null,system.reflection,C#,.net,Null,System.reflection,此方法比较同一类的两个对象: foreach (var field in fields.Where(field => !objTarget .GetType().GetProperty(field).GetValue(objTarget, null) .Equals(obj.GetType().GetProperty(field).GetValue(obj, null)))) 如果这两个属性都有值,它正常工作,但有时在这两个对象中的一个对象中有一个null

此方法比较同一类的两个对象:

foreach (var field in fields.Where(field => !objTarget
        .GetType().GetProperty(field).GetValue(objTarget, null)
        .Equals(obj.GetType().GetProperty(field).GetValue(obj, null))))
如果这两个属性都有值,它正常工作,但有时在这两个对象中的一个对象中有一个null属性,我如何处理它

编辑: 如果我比较两个对象,即:

var a = new Test();
var b = new Test();
a.Property1 = "1";
b.Property1 = null;
我收到空引用异常:

ConsoleApplication1.exe中发生类型为“System.NullReferenceException”的未处理异常


不要使用LINQ和
Where
方法获取变量的值并将条件放入循环中:

foreach (var field in fields)
{
    var val1 = objTarget.GetType().GetProperty(field).GetValue(objTarget, null);
    var val2 = obj.GetType().GetProperty(field).GetValue(obj, null));

    if(val1 == null and val2 != null || val1 != null && !val1.Equals(val2))
    {
        // your code
    }
}

什么是“工作不正常”?它是否抛出异常?如果是,那是什么?@TroyCarlson我编辑了这篇文章。谢谢这不是一种方法。这只是一个循环的一部分。也许您应该向我们展示一些连贯的代码,比如整个方法以及如何调用它。我们可以做一些假设,但是那些对我来说很明显的假设不会在我们展示的代码中导致NullReferenceException。@jmchilney-如果第一个的属性是
null
-
null.Equals…
显然会导致异常,而且确实在该代码中还有很多其他地方可能发生异常(因为OP说它大部分时间都有效,所以没那么有趣)。@Alexei Levenkov,啊,是的,我错过了,因为当时的线路中断。