У меня есть два класса, A и B. A имеет экземпляр B, и при сериализации A я хочу, чтобы B был на том же уровне, что и A, а не подэлементом.
Так что я хочурезультирующий xml должен стать
<a>
<avalue>a</avalue>
<bvalue>b</bvalue>
</a>
Эта программа помещает B в свой собственный элемент как
<a>
<avalue>a</avalue>
<b>
<bvalue>b</bvalue>
</b>
</a>
public class A
{
public string avalue = "a";
public B b = new B();
}
public class B
{
public string bvalue = "b";
}
class Program
{
static void Main(string[] args)
{
var a = new A();
var xml = new XmlSerializer(a.GetType());
xml.Serialize(new StreamWriter(@"c:\temp\tmp.xml"), a);
}
}
PS: Это должно быть задано раньше, но я не уверенчто искать.Мой гугл-фу оказывается пустым ...
Редактировать:
И я надеюсь избежать решения "обертки", если это возможно:
public class A
{
public string avalue = "a";
[XmlIgnore]
public B b { get; set; }
[XmlElement("bvalue")]
public string bvalue
{
get { return b.bvalue; }
set { b.bvalue = value; }
}
}