Я хочу использовать XmlSerializer для сериализации класса, типичные вещи.Мое ОДНОЕ отличие в том, что я хочу сериализовать пользовательский объект ComplexType как атрибут, а не дочерний элемент.
Я видел другие вопросы о переполнении стека, и в ответах говорится, что это невозможно.Я знаю, что это неправильно.
Ошибка выглядит следующим образом:
"XmlAttribute / XmlText не может использоваться для кодирования сложных типов."
- или -
"XmlAttribute / XmlText не может быть использован для кодирования типов, реализующих IXmlSerializable."
Просто измените myfield с ComplexType на DateTime, и он отлично работает.DateTime определенно сложен, поэтому мне просто нужно знать, что изменить в классе или атрибутах.
ex: ДА
<Container myComplexType="specialencoding" />
ex: NO
<Container>
<myComplexType>specialencoding</myComplexType>
</Container>
- Посмотрите, насколько лучше первый ... Я хочу этот.
- Код такой ...
[XmlRoot(ElementName="Container")]
public class Container
{
[XmlAttribute(AttributeName="myComplexType")]
public ComplexType myfield = new ComplexType();
}
public class ComplexType
{
public ComplexType(){}
public ComplexType(string encoding){}
public override string ToString() {return "specialencoding";}
}
Если я реализую ComplexType: IXmlSerializable, яполучите второе сообщение об ошибке выше.
Основной используемый сериализатор:
XmlSerializer serializer = new XmlSerializer(typeof(Container));
serializer.serialize("outfile.xml", new Container());