示例#1
0
        /// <summary>
        ///     Shoud write the number of messages, types and enums
        ///     Messages, types and enums should be handled with proper directory & file writing
        /// </summary>
        /// <param name="args">read line</param>
        internal static void Main(string[] args)
        {
            ProcessArgs(args, out D2JsonProvider d2JsonProvider);

            var typesBuilder = new ProtocolClassBuilder(d2JsonProvider.Types
                                                        .Select(m => new TypeClassWriter(m, d2JsonProvider)));
            var messagesBuilder = new ProtocolClassBuilder(d2JsonProvider.Messages
                                                           .Select(m => new MessageClassWriter(m, d2JsonProvider)));
            var enumsBuilder = new EnumClassBuilder(d2JsonProvider.Enums
                                                    .Select(m => new EnumClassWriter(m, d2JsonProvider)));

            var messageBuildTime = Timing.BenchMethod(() =>
            {
                messagesBuilder.CreateRepositories();
                messagesBuilder.CreateFiles();
                messagesBuilder.WriteFiles();
            });

            var typesBuildTime = Timing.BenchMethod(() =>
            {
                typesBuilder.CreateRepositories();
                typesBuilder.CreateFiles();
                typesBuilder.WriteFiles();
            });

            var enumsBuildTime = Timing.BenchMethod(() =>
            {
                enumsBuilder.CreateRepositories();
                enumsBuilder.CreateFiles();
                enumsBuilder.WriteFiles();
            });

            WriteLine($"> Types generated in {typesBuildTime}ms");
            WriteLine($"> Messages generated in {messageBuildTime}ms");
            WriteLine($"> Enums generated in {enumsBuildTime}ms");
            WriteLine("> Press any key to exit...");
            ReadKey();
        }