Example #1
0
        private string GetCustomTypeMembers(Type customType)
        {
            StringBuilder sb      = new StringBuilder();;
            var           xmlNode = GetXmlComment(customType);

            foreach (var prop in customType.GetProperties())
            {
                if (prop.PropertyType.IsClass &&
                    !prop.PropertyType.FullName.StartsWith("System."))
                {
                    sb.Append($"\"{prop.Name}\":{{{GetCustomTypeMembers(prop.PropertyType)}}},");
                }
                else if (prop.PropertyType.IsClass &&
                         prop.PropertyType.FullName.StartsWith("System.Collections.Generic.List") &&
                         prop.PropertyType.GenericTypeArguments.Length == 1
                         )
                {
                    sb.Append($"\"{prop.Name}\":[{{{GetCustomTypeMembers(prop.PropertyType.GenericTypeArguments[0])}}}],");
                }
                else
                {
                    var comment    = prop.GetCustomAttribute <JimuFieldCommentAttribute>();
                    var proComment = comment == null ? "" : (" | " + comment?.Comment);
                    var key        = XmlCommentsMemberNameHelper.GetMemberNameForMember(prop);
                    if (comment == null && xmlNode != null && xmlNode.TryGetValue(key, out var node))
                    {
                        proComment = $" | " + node.Value.Trim();
                    }
                    proComment = FilterJson(proComment);
                    sb.Append($"\"{prop.Name}\":\"{prop.PropertyType.ToString()}{proComment}\",");
                }
            }
            return(sb.ToString().TrimEnd(','));
        }