示例#1
0
        private static void ReflectionAppend(
            object lhs,
            object rhs,
            Type clazz,
            EqualsBuilder builder,
            bool useTransients)
        {
            var fields = clazz.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic |
                                         BindingFlags.DeclaredOnly);

            for (var i = 0; i < fields.Length && builder._isEqual; i++)
            {
                var f = fields[i];
                //TODO:atrosin Revise:f.getName().indexOf('$')
                if (f.Name.IndexOf('$') == -1 &&
                    (useTransients || !IsTransient(f)) &&
                    !f.IsStatic)
                {
                    try
                    {
                        builder.Append(f.GetValue(lhs), f.GetValue(rhs));
                    }

                    catch (TargetException te)
                    {
                        throw new Exception("Unexpected TargetException", te);
                    }
                }