Если вы говорите об (xml) атрибутах (т.е. <foo bar="abc"/>
), то вы не говорите о DataContractSerializer
- так что, возможно, придерживайтесь XmlType
и т. Д., Например:
[XmlRoot(Namespace="Data/Main")]
public class Request {
[XmlElement(Namespace = "Data/All")]
public int Id { get; set; }
[XmlElement(Namespace="Data/All")]
public Name Name {get;set;}
}
[XmlType(Namespace="Data/All")]
public class Name {
[XmlAttribute("test")]
public bool Test {get;set;}
public string FirstName {get;set;}
public string LastName {get;set;}
}
Это не имеет псевдонимов - но, похоже, это правильно, по крайней мере ...
Объедините атрибуты выше с кодом "Guard" XmlSerializerNamespaces
, и он должен быть там ...
(кредит здесь "Охрана", но это все равно вики ...)
Request req = new Request {
Id = 0, Name = new Name {
Test = true, FirstName = "Dan", LastName = "Atkinson"
}
};
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("x1", "Data/Main");
ns.Add("x2", "Data/All");
new XmlSerializer(req.GetType()).Serialize(Console.Out, req,ns);