Microsoft.ServiceModel.Web.HelpPageInvoker.CreateSchema C# (CSharp) Method

CreateSchema() private method

private CreateSchema ( Type body, bool isXmlSerializerType ) : Message
body System.Type
isXmlSerializerType bool
return Message
        Message CreateSchema(Type body, bool isXmlSerializerType)
        {
            System.Collections.IEnumerable schemas;
            if (isXmlSerializerType)
            {
                XmlReflectionImporter importer = new XmlReflectionImporter();
                XmlTypeMapping typeMapping = importer.ImportTypeMapping(body);
                XmlSchemas s = new XmlSchemas();
                XmlSchemaExporter exporter = new XmlSchemaExporter(s);
                exporter.ExportTypeMapping(typeMapping);
                schemas = s.GetSchemas(null);
            }
            else
            {
                XsdDataContractExporter exporter = new XsdDataContractExporter();
                exporter.Export(body);
                schemas = exporter.Schemas.Schemas();
            }
            using (MemoryStream stream = new MemoryStream())
            {
                XmlWriterSettings xws = new XmlWriterSettings() { Indent = true };
                using (XmlWriter w = XmlWriter.Create(stream, xws))
                {
                    w.WriteStartElement("Schemas");
                    foreach (XmlSchema schema in schemas)
                    {
                        if (schema.TargetNamespace != "http://www.w3.org/2001/XMLSchema")
                        {
                            schema.Write(w);
                        }
                    }
                }
                stream.Seek(0, SeekOrigin.Begin);
                using (XmlReader reader = XmlReader.Create(stream))
                {
                    return Message.CreateMessage(MessageVersion.None, null, XElement.Load(reader, LoadOptions.PreserveWhitespace));
                }
            }
        }