Пример #1
0
        public string GenerateMd5(SerializationGenerator generator)
        {
            List <byte> codeMd5 = new List <byte>();

            foreach (var node in generator.RegisteredTypes)
            {
                if (node.CodeMd5 != null)
                {
                    codeMd5.AddRange(node.CodeMd5);
                }
            }

            return(MD5Util.Md5ToString(MD5Util.MD5(codeMd5.ToArray())));
        }
Пример #2
0
        public void Export(SerializationGenerator generator, string nameSpace, string targetFolder)
        {
            foreach (var pair in generator.RegisteredTypes)
            {
                if (pair.IsEnum)
                {
                    continue;
                }

                var builder = new TextBuilder();
                VisitRoot(pair, nameSpace, builder);
                pair.CodeMd5 = MD5Util.MD5(builder.ToString());

                builder.WriteToFile(Path.Combine(targetFolder, pair.FileName + ".cs"));
            }
        }
Пример #3
0
        public void Export(SerializationGenerator generator, string nameSpace, string md5, string targetFolder)
        {
            var builder = new TextBuilder();

            builder.WriteLine("using System;");
            builder.WriteLine("using System.Collections.Generic;");
            builder.WriteLine("using System.IO;");
            builder.WriteLine("using Kernel;");
            builder.WriteLine("using Kernel.Config;");
            builder.EmptyLine();

            builder.WriteLine("namespace {0}", nameSpace);
            builder.LeftPar();
            builder.Indent();

            builder.WriteLine("public partial class ConfigSerializer : ConfigSerializerBase");
            builder.LeftPar();
            builder.Indent();

            builder.WriteLine("private static readonly ConfigFieldInfo[] fields =");
            builder.WriteLine("{");
            builder.Indent();

            foreach (var pair in generator.RegisteredTypes)
            {
                if (pair.IsEntry && !pair.Root.PoliClass)
                {
                    VisitEntry(pair, builder);
                }
            }

            builder.UnIndent();
            builder.WriteLine("};");

            builder.EmptyLine();

            builder.WriteLine("public override ConfigFieldInfo[] Fields { get { return fields; } }");

            builder.EmptyLine();

            builder.WriteLine("public override string Hash {{ get {{ return \"{0}\"; }} }}", md5);

            builder.EmptyLine();

            builder.WriteLine("private static readonly Dictionary<Type, IConfigSerializer> serializers = new Dictionary<Type, IConfigSerializer>");
            builder.WriteLine("{");
            builder.Indent();

            foreach (var pair in generator.RegisteredTypes)
            {
                if ((pair.Root.PoliClass || !XmlUtil.IsPolymorphicClass(pair.Type)) && !pair.IsEnum)
                {
                    VisitSerializer(pair, builder);
                }
            }

            builder.UnIndent();
            builder.WriteLine("};");

            builder.EmptyLine();

            builder.WriteLine("public override Dictionary<Type, IConfigSerializer> Serializers { get { return serializers; } }");

            builder.UnIndent();
            builder.RightPar();

            builder.UnIndent();
            builder.RightPar();

            builder.WriteToFile(Path.Combine(targetFolder, "ConfigSerializer.cs"));
        }