예제 #1
0
        private static IEnumerable <ICodeGenerator> CreateGenerators(
            ClientGeneratorOptions options)
        {
            yield return(new ClassGenerator());

            yield return(new InputClassGenerator());

            yield return(new InputClassSerializerGenerator());

            yield return(new InterfaceGenerator());

            yield return(new ResultParserGenerator(options));

            yield return(new OperationGenerator());

            yield return(new ClientInterfaceGenerator());

            yield return(new ClientClassGenerator());

            yield return(new QueryGenerator());

            yield return(new EnumGenerator());

            yield return(new EnumValueSerializerGenerator(options.LanguageVersion));

            if (options.EnableDISupport)
            {
                yield return(new ServicesGenerator());
            }
        }
        protected static async Task <string> WriteAllAsync(
            IReadOnlyCollection <ICodeDescriptor> descriptors,
            ITypeLookup typeLookup)
        {
            var options = new ClientGeneratorOptions();

            var generators = new ICodeGenerator[]
            {
                new InterfaceGenerator(options),
                new ClassGenerator(options)
            };

            using (var stream = new MemoryStream())
            {
                using (var sw = new StreamWriter(stream, Encoding.UTF8))
                {
                    using (var cw = new CodeWriter(sw))
                    {
                        foreach (ICodeGenerator generator in generators)
                        {
                            foreach (ICodeDescriptor descriptor in descriptors)
                            {
                                if (generator.CanHandle(descriptor))
                                {
                                    await generator.WriteAsync(
                                        cw, descriptor, typeLookup);

                                    await cw.WriteLineAsync();
                                }
                            }
                        }
                    }
                }
                return(Encoding.UTF8.GetString(stream.ToArray()));
            }
        }
예제 #3
0
 protected CodeGenerator(ClientGeneratorOptions options)
 {
     Options = options;
     ClientAccessModifier = options.ClientAccessModifier.ToString().ToLowerInvariant();
     ModelAccessModifier  = options.ModelAccessModifier.ToString().ToLowerInvariant();
 }