Beispiel #1
0
        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");
        }