Exemplo n.º 1
0
        private ICodeGeneratorContext buildCodeGeneratorContext(Options.CodeGenOptions options)
        {
            XmlSchemas xmlSchemas = null;
            MetadataResolverOptions metadataResolverOptions = CodeGenOptionsParser.GetMetadataResolverOptions(options);

            // Generate from data contract files
            if (options.GenerateDataContractsOnly)
            {
                xmlSchemas = MetadataFactory.GetXmlSchemaSetFromDataContractFiles(metadataResolverOptions);
            }
            else // Generate from wsdl file
            {
                xmlSchemas = MetadataFactory.GetXmlSchemaSetFromWsdlFile(metadataResolverOptions);
            }

            return(new CodeGeneratorContext(xmlSchemas, options));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Executes the code generation workflow.
        /// </summary>
        public CodeWriterOutput GenerateCode(Options.CodeGenOptions options)
        {
            ICodeGeneratorContext codeGeneratorContext = buildCodeGeneratorContext(options);
            ICodeGenerator        codeGenerator        = this.buildCodeGenerator(options);

            CodeWriterOptions writeOptions = CodeGenOptionsParser.GetCodeWriterOptions(options);

            if (options.OnlyUseDataContractSerializer)
            {
                CodeCompileUnit targetCodeCompileUnit = codeGenerator.GenerateDataContractCode(codeGeneratorContext);
                return(CodeWriter.CodeWriter.Write(targetCodeCompileUnit, writeOptions));
            }
            else if (options.GenerateSeparateFilesEachXsd)
            {
                CodeNamespace[] targetCodeNamespaces = codeGenerator.GenerateCodes(codeGeneratorContext);
                return(CodeWriter.CodeWriter.Write(targetCodeNamespaces, writeOptions));
            }
            else
            {
                CodeNamespace targetCodeNamespace = codeGenerator.GenerateCode(codeGeneratorContext);
                return(CodeWriter.CodeWriter.Write(targetCodeNamespace, writeOptions));
            }
        }