0
我有以下幾行代碼和問題。反序列化帶有泛型的複雜對象列表對象C#
[Serializable, XmlRoot(Namespace = "http://www.asd.com", ElementName = "DalClassObject", IsNullable = true)]
[XmlType(AnonymousType = true)]
public class DalClassObject<T>
{
public DalClassObject()
{ }
[XmlElement(ElementName = "objeto", IsNullable = true)]
public T Objeto { get; set; }
[XmlElement(ElementName = "indicador")]
public Int32 Indicador { get; set; }
[XmlElement(ElementName = "validador")]
public Boolean Validador { get; set; }
[XmlElement(ElementName = "mensaje")]
public String Mensaje { get; set; }
//[XmlElement(ElementName = "coleccion")]
[XmlArray("colecciones")]
[XmlArrayItem]
public List<T> Colecciones { get; set; }
}
和
[Serializable, XmlRoot("botblpacientes")]
public class BoTblPacientes
{
[XmlElement(ElementName = "tblPacientesID")]
public String tblPacientesID { get; set; }
[XmlElement(ElementName = "tblPacientesApellidos")]
public String tblPacientesApellidos { get; set; }
[XmlElement(ElementName = "tblPacientesNombres")]
public String tblPacientesNombres { get; set; }
[XmlElement(ElementName = "tblPacientesDocumento")]
public String tblPacientesDocumento { get; set; }
[XmlElement(ElementName = "tblPacientesCorreo")]
public String tblPacientesCorreo { get; set; }
[XmlElement(ElementName = "tblPacientesFoto")]
public byte[] tblPacientesFoto { get; set; }
[XmlElement(ElementName = "tblPacientesDireccion")]
public String tblPacientesDireccion { get; set; }
[XmlElement(ElementName = "tblPacientesEstadoCivil")]
public Int32 tblPacientesEstadoCivil { get; set; }
[XmlElement(ElementName = "tblPacientesFechaNacimiento")]
public DateTime tblPacientesFechaNacimiento { get; set; }
[XmlElement(ElementName = "tblPacientesSexo")]
public Int32 tblPacientesSexo { get; set; }
[XmlElement(ElementName = "tblPacientesTlfCasa")]
public String tblPacientesTlfCasa { get; set; }
[XmlElement(ElementName = "tblPacientesTlfCelular")]
public String tblPacientesTlfCelular { get; set; }
[XmlElement(ElementName = "tblPacientesTlfOficina")]
public String tblPacientesTlfOficina { get; set; }
[XmlElement(ElementName = "tblPacientesLugarNacimiento")]
public String tblPacientesLugarNacimiento { get; set; }
[XmlElement(ElementName = "tblPacientesMotivoConsulta")]
public String tblPacientesMotivoConsulta { get; set; }
[XmlElement(ElementName = "tblPacientesFechaRegistro")]
public DateTime tblPacientesFechaRegistro { get; set; }
[XmlElement(ElementName = "tblPacientesIDMaster")]
public Int32 tblPacientesIDMaster { get; set; }
}
public static T DeserializeObject<T>(string xml)
{
XmlSerializer xs = new XmlSerializer(typeof(T));
MemoryStream memoryStream = new MemoryStream(StringToUTF8ByteArray(xml));
XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
return (T)xs.Deserialize(memoryStream);
}
private static Byte[] StringToUTF8ByteArray(string pXmlString)
{
UTF8Encoding encoding = new UTF8Encoding();
byte[] byteArray = encoding.GetBytes(pXmlString);
return byteArray;
}
我用下面的反序列化,在簡歷
DalClassObject<BoTblPacientes> objeto = new DalClassObject<BoTblPacientes>();
objeto.Objeto = new BoTblPacientes();
objeto.Colecciones = new List<BoTblPacientes>();
String valor = String.Empty;
objeto = UtilClassSerializacion.DeserializeObject<DalClassObject<BoTblPacientes>>(reader[0].ToString());
當我檢查objeto.Collecciones我看值,但所有空值。如果這個返回值爲2,則全部變空。 我的序列化有什麼問題??我嘗試使用xmlelement,xmlarray,xmlarrayitem。
我的XML對象是
<?xml version="1.0" ?>
<DalClassObject xmlns="http://www.asd.com"><objeto class="BoTblPacientes"></objeto>
<validador>true</validador><mensaje>El paciente existe en el sistema .</mensaje>
<colecciones>
<BoTblPacientes>
<tblpacientesmotivoconsulta>5</tblpacientesmotivoconsulta><tblpacientestlfcasa>5</tblpacientestlfcasa>
<tblpacientescelular>5</tblpacientescelular><tblpacientesoficina>5</tblpacientesoficina>
<tblpacientescorreo>5</tblpacientescorreo><tblpacientesdireccion>5</tblpacientesdireccion>
<tblpacientesapellidos>5</tblpacientesapellidos><tblpacientesdocumento>5</tblpacientesdocumento>
<tblpacientessexoid>0</tblpacientessexoid><tblpacientesfechanacimiento class="sql-date">2012-05-13</tblpacientesfechanacimiento>
<tblpacientesnombres>5</tblpacientesnombres><tblpacientesid>2</tblpacientesid><tblpacientesestadocivil>0</tblpacientesestadocivil>
<tblpacientesfecharegistro class="sql-date">2012-05-13</tblpacientesfecharegistro><tblpacienteidmaster>0</tblpacienteidmaster>
</BoTblPacientes>
<BoTblPacientes>
<tblpacientesmotivoconsulta>23232</tblpacientesmotivoconsulta><tblpacientestlfcasa>2332</tblpacientestlfcasa>
<tblpacientescelular>23</tblpacientescelular><tblpacientesoficina>23</tblpacientesoficina><tblpacientescorreo>23</tblpacientescorreo>
<tblpacientesdireccion>2323</tblpacientesdireccion><tblpacientesapellidos>ewr</tblpacientesapellidos>
<tblpacientesdocumento>5</tblpacientesdocumento><tblpacientessexoid>0</tblpacientessexoid>
<tblpacientesfechanacimiento class="sql-date">2012-03-29</tblpacientesfechanacimiento><tblpacientesnombres>wer</tblpacientesnombres>
<tblpacientesid>3</tblpacientesid><tblpacientesestadocivil>0</tblpacientesestadocivil>
<tblpacientesfecharegistro class="sql-date">2012-05-13</tblpacientesfecharegistro>
<tblpacienteidmaster>0</tblpacienteidmaster>
</BoTblPacientes></colecciones>
</DalClassObject>
我測試,但我的類是通用的,我怎麼能說
[XmlArray("colecciones")]
[XmlArrayItem(Type=typeof(T))] // is this was possible my problem become solved but dont support Parameter as variable.
public List<T> Colecciones { get; set; }
任何幫助嗎?
我的問題是arralist colecciones,成爲null反序列化不加載值 – NewCastle79
現在我試圖解決使用linq2xml。 – NewCastle79