我有一个xsd文件,其中包含多个名称空间。
使用xsd.exe(版本4.8.3928)生成C#文件后,everting可以,但是:
[System.Xml.Serialization.XmlTypeAttribute(Namespace ="MainNamespace")]
public class MainClass
{
public SubClass mySubClass{get;set;}
}
[System.Xml.Serialization.XmlTypeAttribute(Namespace ="SubNamespace")]
public SubClass
{
//
}
如果我使用XmlSerializer对其进行序列化
var ns = new XmlSerializerNamespaces();
ns.Add("main", "MainNamespace");
ns.Add("sub", "SubNamespace");
var mainClass = new MainClass();
mainClass.SubClass = new SubClass();
var serializer = new XmlSerializer(typeof(MainClass));
...
serializer.Serialize(writer, mainClass, ns);
他们两个都得到main:xml中的命名空间。
如果我将[XmlElement(Namespace = "SubNamespace")]
的{{1}}属性放在SubClass
的顶部
可以。
问题是:如何使用MainClass
创建类并强制所有属性应包括其名称空间
要么
如何告诉xsd.exe
放置XmlSerializer
的名称空间而不添加subclasses
属性。