0

我正在从 XSD 文件生成对象和类。但是在一个命名空间下创建的类而不是 XSD 的目标命名空间。如何编译架构,并且应该在命名空间下生成类?

这是我的代码示例:

// generate an assembly representing the given schema:
var codeNamespace = new CodeNamespace(namespaceName);
var codeProvider = new CSharpCodeProvider();
var codeGenerationOptions = new CodeGeneratorOptions();
using (var writer = new StringWriter())
{
    codeProvider.GenerateCodeFromNamespace(codeNamespace, writer,
                                           codeGenerationOptions);
    code = writer.ToString();
}
4

1 回答 1

0

您的代码示例的工作原理是将生成的代码放在您在namespaceName变量中指定的命名空间中。如果您希望您的命名空间与 XSD 匹配,您可以namespaceName相应地设置您的变量。

例如,如果我string namespaceName = "My.Namespace.One";在您的示例代码中定义,则代码的结果值"namespace My.Namespace.One {\r\n\r\n}"符合预期。

因此,您只需从 XSD 中读取命名空间并将其分配namespaceName 给在你的例子中。

但是,要实际编译您生成的代码,命名空间将需要符合 C# 限制。像http://schemas.microsoft.com/winfx/2006/xaml这样的命名空间不会在 C# 中编译。该命名空间可能(我不确定)在 IL 字节码级别有效,但即使是这样,我也真的想知道您所做的事情是否值得付出这种努力,特别是考虑到这对 C# 来说是一种痛苦使用生成的程序集。

我觉得您的问题/示例中可能缺少一些细节,这可能不是您要查找的信息;但是,我相信这个答案与您提供的一致。

于 2013-02-07T16:30:09.487 回答