У меня, должно быть, ОЧЕНЬ ГЛУПАЯ проблема с сериализатором контрактов данных. Он отказывается работать. Я просто пытаюсь сериализовать объект в XmlDocument, однако, похоже, я натыкаюсь на стену.
Вот контракты данных, которые я хочу сериализовать:
[DataContract(Namespace="urn://test", Name = "ServiceFault1")]
public class ServiceFault
{
[DataMember()]
public int hello { get; set; }
[DataMember()]
public List<Error> Errors {get; set;}
}
[DataContract(Namespace = "urn://test", Name = "Error1")]
public class Error
{
[DataMember()]
public string ErrorCategoryCode { get; set; }
[DataMember()]
public string LocalErrorCode { get; set; }
[DataMember()]
public string Description { get; set; }
}
И метод, который выполняет сериализацию;
public static XmlDocument Serialize(ServiceFault toSer)
{
DataContractSerializer ser = new DataContractSerializer(toSer.GetType());
MemoryStream mem = new MemoryStream();
ser.WriteObject(XmlWriter.Create(mem), toSer);
XmlDocument tmp = new XmlDocument();
mem.Seek(0, SeekOrigin.Begin);
tmp.Load(mem);
return tmp;
}
Всякий раз, когда я вызываю метод сериализации, поток памяти всегда пуст. Я также попробовал построитель строк, просто чтобы посмотреть, выходит ли что-нибудь.
Если я использую XmlSerializer, это работает, однако я хотел бы понять, почему приведенный выше код не работает? Почему сериализатор всегда пуст?
Спасибо за любую помощь! ТМ
ser.WriteObject(mem, toSer);
- person marc_s   schedule 04.10.2010