比较GetValue反射方法中的两个值

Mal*_*olm 9 c# reflection

我得到了value1,value2当它们应该是相同时,它们都是零并且不相等.

我怎么能比较这两个对象的值?

private bool CheckProjectIsUnique(
    TBR.Domain.Project project,
    List<UniqueProjectType> types,
    out UniqueProjectType uniqueCandidate)
{
    uniqueCandidate = CreateUniqueProjectType(project);

    if (types.Count == 0)
        return true;

    foreach (UniqueProjectType type in types)
    {
        bool exists = true;
        foreach (PropertyInfo prop in type.GetType().GetProperties())
        {
            var value1 = prop.GetValue(type, null);
            var value2 = prop.GetValue(uniqueCandidate, null);
             if (value1 != value2)
             {
                 exists = false;
                 break;
             }
        }
        if (exists)
            return true;
    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)

Mig*_*gol 14

它们是对象,因此您应该使用value1.Equals(value2)检查是否value1不是null

编辑:更好:使用静态Object.Equals(value1, value2)(@LukeH的信用)

  • 或者使用静态`object.Equals(value1,value2)`方法,它将为您处理空检查. (3认同)