Exemplo n.º 1
0
        private static string DumpPreventRecursion(object obj, IdentitySet4 dumped, int stackLimit
                                                   )
        {
            stackLimit--;
            if (obj == null)
            {
                return("null");
            }
            var clazz = obj.GetType();

            if (Platform4.IsSimple(clazz))
            {
                return(obj.ToString());
            }
            var sb = new StringBuilder();

            sb.Append(clazz.FullName);
            sb.Append(" (");
            sb.Append(Runtime.IdentityHashCode(obj));
            sb.Append(")");
            if (dumped.Contains(obj) || stackLimit <= 0)
            {
                return(sb.ToString());
            }
            dumped.Add(obj);
            var fields = Runtime.GetDeclaredFields(clazz);

            for (var fieldIndex = 0; fieldIndex < fields.Length; ++fieldIndex)
            {
                var field = fields[fieldIndex];
                Platform4.SetAccessible(field);
                try
                {
                    if (field.GetValue(null) == field.GetValue(obj))
                    {
                        continue;
                    }
                }
                catch (Exception)
                {
                }
                // static field.getModifiers() wouldn't sharpen
                sb.Append("\n");
                sb.Append("\t");
                sb.Append(field.Name);
                sb.Append(": ");
                try
                {
                    sb.Append(DumpPreventRecursion(field.GetValue(obj), dumped, stackLimit));
                }
                catch (Exception e)
                {
                    sb.Append("Exception caught: ");
                    sb.Append(e);
                }
            }
            return(sb.ToString());
        }
Exemplo n.º 2
0
        public static FieldInfo GetField(Type clazz, string name)
        {
            Type curclazz = clazz;

            while (curclazz != null)
            {
                try
                {
                    FieldInfo field = Sharpen.Runtime.GetDeclaredField(curclazz, name);
                    Platform4.SetAccessible(field);
                    if (field != null)
                    {
                        return(field);
                    }
                }
                catch (Exception)
                {
                }
                curclazz = curclazz.BaseType;
            }
            return(null);
        }
Exemplo n.º 3
0
 /// <exception cref="Db4objects.Db4o.Internal.ReflectException"></exception>
 public static object Invoke(object[] @params, object onObject, MethodInfo method)
 {
     if (method == null)
     {
         return(null);
     }
     Platform4.SetAccessible(method);
     try
     {
         return(method.Invoke(onObject, @params));
     }
     catch (TargetInvocationException e)
     {
         throw new ReflectException(e.InnerException);
     }
     catch (ArgumentException e)
     {
         throw new ReflectException(e);
     }
     catch (MemberAccessException e)
     {
         throw new ReflectException(e);
     }
 }