예제 #1
0
        private string InnerSerialize(CfgNode node) {
            var meta = CfgMetadataCache.GetMetadata(node.GetType());
            var builder = new StringBuilder();
            if (meta.All(kv => kv.Value.ListType == null)) {
                builder.Append("{");
                SerializeAttributes(meta, node, builder);
                builder.TrimEnd(", ");
                builder.Append(" }");
            } else {
                builder.AppendLine("{");
                SerializeAttributes(meta, node, builder);
                SerializeElements(meta, node, builder, 1);
                builder.AppendLine();
                builder.Append("}");
            }

            return builder.ToString();
        }
예제 #2
0
        string InnerSerialize(CfgNode node)
        {
            var type = node.GetType();

#if NETS
            var attribute = type.GetTypeInfo().GetCustomAttributes(typeof(CfgAttribute), true).FirstOrDefault() as CfgAttribute;
#else
            var attribute = type.GetCustomAttributes(typeof(CfgAttribute), true).FirstOrDefault() as CfgAttribute;
#endif
            if (attribute != null && !attribute.serialize)
            {
                return(string.Empty);
            }

            var name    = !string.IsNullOrEmpty(attribute?.name) ? attribute.name : type.Name;
            var meta    = CfgMetadataCache.GetMetadata(type);
            var builder = new StringBuilder();

            if (JustAttributes(meta, node))
            {
                builder.Append("<add");
                SerializeAttributes(meta, node, builder);
                builder.Append(" />");
            }
            else
            {
                builder.Append("<");
                builder.Append(name);
                SerializeAttributes(meta, node, builder);
                builder.AppendLine(">");
                SerializeElements(meta, node, builder, 1);
                builder.Append("</");
                builder.Append(name);
                builder.Append(">");
            }

            return(builder.ToString());
        }
예제 #3
0
        string InnerSerialize(CfgNode node) {

            var type = node.GetType();
            var meta = CfgMetadataCache.GetMetadata(type);
            var builder = new StringBuilder();

            if (JustAttributes(meta, node)) {
                builder.Append("<add");
                SerializeAttributes(meta, node, builder);
                builder.Append(" />");
            } else {
                builder.Append("<");
                builder.Append(type.Name);
                SerializeAttributes(meta, node, builder);
                builder.AppendLine(">");
                SerializeElements(meta, node, builder, 1);
                builder.Append("</");
                builder.Append(type.Name);
                builder.Append(">");
            }

            return builder.ToString();
        }
예제 #4
0
        private string InnerSerialize(CfgNode node)
        {
            var meta    = CfgMetadataCache.GetMetadata(node.GetType());
            var builder = new StringBuilder();

            if (meta.All(kv => kv.Value.ListType == null))
            {
                builder.Append("{");
                SerializeAttributes(meta, node, builder);
                builder.TrimEnd(", ");
                builder.Append(" }");
            }
            else
            {
                builder.AppendLine("{");
                SerializeAttributes(meta, node, builder);
                SerializeElements(meta, node, builder, 1);
                builder.TrimEnd(", ");
                builder.AppendLine();
                builder.Append("}");
            }

            return(builder.ToString());
        }