protected override void WriteInternal(StringBuilder resultBuilder, string name, IDictionary dictionary) { var sortedKeys = dictionary.Keys.Cast <object>() .Select(_ => new { Key = _, ToStr = _.ToString() }) .OrderBy(_ => _.ToStr) .Select(_ => _.Key); foreach (var key in sortedKeys) { string combinedName; var keyString = key as string; if (keyString != null) { if (keyString.StartsWith(ExceptionDumpUtil.ServiceDataPrefix)) { continue; } combinedName = name + "[\"" + key + "\"]"; } else { combinedName = name + "[" + key + "]"; } var value = dictionary[key]; RegularPropertiesRule.WriteNameValue(resultBuilder, combinedName, value); } }
protected override void WriteInternal(StringBuilder resultBuilder, string name, IEnumerable enumerable) { int i = 0; foreach (var item in enumerable) { string combinedName = name + "[" + i + "]"; RegularPropertiesRule.WriteNameValue(resultBuilder, combinedName, item); i++; } }
protected static void WritePropertyValue(StringBuilder resultBuilder, string ownerName, object ownerValue, string propertyName) { var propertyInfo = TryGetSingleReadablePropertyWithoutParameters(ownerValue, propertyName); if (propertyInfo == null) { return; } var propertyValue = propertyInfo.GetValue(ownerValue, new object[0]); RegularPropertiesRule.WriteNameValue(resultBuilder, ownerName + "." + propertyName, propertyValue); }
public override void Write(StringBuilder resultBuilder, string name, object value) { new SimplePropertyWriter().Write(resultBuilder, name, value); var entryProperty = TryGetSingleReadablePropertyWithoutParameters(value, "Entry"); if (entryProperty != null) { var entry = entryProperty.GetValue(value, new object[0]); var entityProperty = TryGetSingleReadablePropertyWithoutParameters(entry, "Entity"); if (entityProperty != null) { var entity = entityProperty.GetValue(entry, new object[0]); RegularPropertiesRule.WriteNameValue(resultBuilder, name + ".Entry.Entity", entity); var idProperty = TryGetSingleReadablePropertyWithoutParameters(entity, "Id"); if (idProperty != null) { var id = idProperty.GetValue(entity, new object[0]); RegularPropertiesRule.WriteNameValue(resultBuilder, name + ".Entry.Entity.Id", id); } } } WritePropertyValue(resultBuilder, name, value, "ValidationErrors"); }