获取C#类型的XSD架构

时间:2010-05-02 13:42:57

标签: c# xsd

如何为c#类型生成xsd模式(在代码中)。肯定有一种方法,因为为wcf中的数据交换生成了xsd模式。

3 个答案:

答案 0 :(得分:2)

比s7orm的答案更进一步我写了这个简单的函数,我从反映xsd.exe得到的:

private void ExtractXsdFromType(Type type, FileInfo xsd)
    {
        XmlReflectionImporter importer = new XmlReflectionImporter();
        XmlTypeMapping mapping = importer.ImportTypeMapping(type);
        XmlSchemas xmlSchemas = new XmlSchemas();
        XmlSchemaExporter xmlSchemaExporter = new XmlSchemaExporter(xmlSchemas);            

        using (FileStream fs = xsd.Create())
        {
            xmlSchemaExporter.ExportTypeMapping(mapping);
            xmlSchemas[0].Write(fs);
        }           
    }

答案 1 :(得分:1)

您可以使用XML Schema Definition Tool (xsd.exe)

xsd.exe YourAssembly.dll /type:YourNamespace.YourType

答案 2 :(得分:1)

所以,我通过在xsd.exe中查看反射器找到了我的问题的解决方案。这是为了将来的参考:

XmlReflectionImporter importer = new XmlReflectionImporter();
XmlTypeMapping stringMapping = importer.ImportTypeMapping(typeof(String));