public virtual void VisitMembers(IEnumerable <string> names, Func <string, Type> typeSelector, Func <string, object> valueSelector, int depth) { foreach (string name in names) { Type type = null; object value = null; try { // Get the type and value type = typeSelector(name); value = valueSelector(name); // If the type is null try using the runtime type if (value != null && type == null) { type = value.GetType(); } } catch (Exception ex) { // Set the value as an exception we know about value = new ObjectVisitorException(null, ex); } finally { VisitMember(name, type, value, depth); } } }
private static HtmlElement CreateExceptionSpan(ObjectVisitorException exception) { HtmlElement span = new HtmlElement("span"); span.AppendChild(HelpersResources.ObjectInfo_PropertyThrewException); span.AppendChild(HtmlElement.CreateSpan(exception.InnerException.Message, "exception")); return(span); }
public override void VisitObjectVisitorException(ObjectVisitorException exception) { Values.Add(exception.InnerException.Message); }
private static HtmlElement CreateExceptionSpan(ObjectVisitorException exception) { HtmlElement span = new HtmlElement("span"); span.AppendChild(HelpersResources.ObjectInfo_PropertyThrewException); span.AppendChild(HtmlElement.CreateSpan(exception.InnerException.Message, "exception")); return span; }
public override void VisitObjectVisitorException(ObjectVisitorException exception) { Current.AppendChild(CreateExceptionSpan(exception)); }
public virtual void VisitMembers(IEnumerable<string> names, Func<string, Type> typeSelector, Func<string, object> valueSelector, int depth) { foreach (string name in names) { Type type = null; object value = null; try { // Get the type and value type = typeSelector(name); value = valueSelector(name); // If the type is null try using the runtime type if (value != null && type == null) { type = value.GetType(); } } catch (Exception ex) { // Set the value as an exception we know about value = new ObjectVisitorException(null, ex); } finally { VisitMember(name, type, value, depth); } } }
public virtual void VisitObjectVisitorException(ObjectVisitorException exception) { }
public virtual void Visit(object value, int depth) { if (value == null || DBNull.Value.Equals(value)) { VisitNull(); return; } // Check to see if the we've already visited this object string id; if (_visited.TryGetValue(value, out id)) { VisitVisitedObject(id, value); return; } string stringValue = value as string; if (stringValue != null) { VisitStringValue(stringValue); return; } if (TryConvertToString(value, out stringValue)) { VisitConvertedValue(value, stringValue); return; } // This exceptin occurs when we try to access the property and it fails // for some reason. The actual exception is wrapped in the ObjectVisitorException ObjectVisitorException exception = value as ObjectVisitorException; if (exception != null) { VisitObjectVisitorException(exception); return; } // Mark the object as visited id = CreateObjectId(value); _visited.Add(value, id); NameValueCollection nameValueCollection = value as NameValueCollection; if (nameValueCollection != null) { VisitNameValueCollection(nameValueCollection, depth); return; } IDictionary dictionary = value as IDictionary; if (dictionary != null) { VisitDictionary(dictionary, depth); return; } IEnumerable enumerable = value as IEnumerable; if (enumerable != null) { VisitEnumerable(enumerable, depth); return; } VisitComplexObject(value, depth + 1); }