繁体   English   中英

反射GetValue null属性

[英]Reflection GetValue null property

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

foreach (var field in fields.Where(field => !objTarget
        .GetType().GetProperty(field).GetValue(objTarget, null)
        .Equals(obj.GetType().GetProperty(field).GetValue(obj, 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
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM