我从XSD文件生成对象和类es。但是在一个名称空间下创建的类而不是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();
}
答案 0 :(得分:0)
您的代码示例的工作原理是它将生成的代码放在您在namespaceName
变量中指定的命名空间中。如果您希望命名空间与XSD匹配,则可以相应地设置namespaceName
变量。
例如,如果我在示例代码中定义string namespaceName = "My.Namespace.One";
,则代码的结果值为"namespace My.Namespace.One {\r\n\r\n}"
。
因此,您只需要从XSD读取命名空间并将其分配给namespaceName
如果您的问题是您想要使用多个命名空间,那么问题与您如何处理代码的XSD有关生成,在您的示例中根本没有显示。
但是,为了实际编译您生成的代码,命名空间需要符合C#限制。像http://schemas.microsoft.com/winfx/2006/xaml
这样的命名空间不能在C#中编译。那个命名空间可能(我不确定)在IL字节代码级别是有效的,但即使它是我真的想知道你在做什么是值得花费那种努力,特别是考虑到C#使用生成的程序集会很痛苦。
我觉得您的问题/示例中可能缺少某些细节,这可能不是您要查找的信息;但是,我相信这个答案与你所提供的一致。