我有一個問題,在c#中的xml序列化爲Windows 7 64位。 我想要序列下面的類:Xml序列化c#枚舉只適用於某些計算機
[XmlRoot("configuration")]
public class ClaseQueSeSerializa
{
[XmlElement(ElementName = "Nombre")]
public string Nombre { get; set; }
[XmlElement(ElementName = "Edad")]
public int Edad { get; set; }
[XmlElement(ElementName = "tipoDeFichero", Type = typeof (Enumerados.teOrigenDato))]
//[XmlIgnore]
public Enumerados.teOrigenDato EnumeradoOrigen { get; set; }
public ClaseQueSeSerializa()
{
Nombre = "John Connor";
Edad = 15;
EnumeradoOrigen = Enumerados.teOrigenDato.Fichero;
}
}
這是序列化方法:
public static class Serializador
{
public static object Deserializar(string file, Type type)
{
try
{
XmlSerializer xmlSerz = new XmlSerializer(type);
using (StreamReader strReader = new StreamReader(file, Encoding.Default, true))
{
object obj = xmlSerz.Deserialize(strReader);
return obj;
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
public static object Serializar(string file, Object obj)
{
try
{
XmlSerializer serializer = new XmlSerializer(obj.GetType());
using (StreamWriter stream = new StreamWriter(file, false, Encoding.Default))
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add(String.Empty, String.Empty);
serializer.Serialize(stream, obj, ns);
}
return true;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
}
這是方法調用:
if (File.Exists(RUTA_INSTALACION_CAM + @"\prueba.xml"))
claseQueSeSerializa = (ClaseQueSeSerializa)Serializador.Deserializar(RUTA_INSTALACION_CAM + @"\prueba.xml", typeof(ClaseQueSeSerializa));
else
Serializador.Serializar(RUTA_INSTALACION_CAM + @"\prueba.xml", claseQueSeSerializa);
當我運行它給我以下錯誤:錯誤反映類型NameProject.ErrorSerializarEnumerados 但是,當我運行生成的exe在其他PC中,它的工作原理。
此外,下面的代碼序列化我的課,而不會在我的大型機錯誤:
[XmlRoot("configuration")]
public class ClaseQueSeSerializa
{
[XmlElement(ElementName = "Nombre")]
public string Nombre { get; set; }
[XmlElement(ElementName = "Edad")]
public int Edad { get; set; }
//[XmlElement(ElementName = "tipoDeFichero", Type = typeof (Enumerados.teOrigenDato))]
[XmlIgnore]
public Enumerados.teOrigenDato EnumeradoOrigen { get; set; }
public ClaseQueSeSerializa()
{
Nombre = "John Connor";
Edad = 15;
EnumeradoOrigen = Enumerados.teOrigenDato.Fichero;
}
}
所以我認爲只有在一些窗口序列化枚舉時7 64位
所有的測試電腦我有一個錯誤已經安裝了Windows 7 64位。
我即將發瘋。有些天才知道什麼是問題?
我嘗試了你的建議,但它不工作。我認爲它不能解決問題,因爲當我忽略枚舉時,類ClaseQueSeSerializa正在被正確序列化。 –