2011-02-08 64 views
0

问题与下面的代码,在这条线:如何根据记录对象的类型定义XmlSerializer的类型?

XmlSerializer x = new XmlSerializer(typeof(????)); 

我想要的类型由记录对象来定义,我能做到吗?

public void ConvertRecordObjectToXML(object RecordObject, out string XML) 
{ 
    string xml = string.Empty; 

    try 
    { 
     string XmlizedString = null; 
     MemoryStream memoryStream = new MemoryStream(); 
     XmlSerializer x = new XmlSerializer(typeof(????)); // <---- ????? 
     XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8); 

     x.Serialize(xmlTextWriter, RecordObject); 
     memoryStream = (MemoryStream)xmlTextWriter.BaseStream; 
     XmlizedString = UTF8ByteArrayToString(memoryStream.ToArray()); 
     XML = XmlizedString; 
    } 
    catch (Exception e) 
    { 
     System.Console.WriteLine(e); 
     xml = ""; 
    } 
} 

回答

3

你试过吗?

XmlSerializer x = new XmlSerializer(RecordObject.GetType()); 
6

每个对象继承对象的方法GetType(),所以应该能够使用:

XmlSerializer x = new XmlSerializer(RecordObject.GetType()); 

的C#的typeof关键字取的类名,并产生类型类型的对象。 GetType()产生相同的结果,但是在一个实例上运行。

+1

对于带解释*的答案+1,而不仅仅是一行代码。 – 2011-02-08 06:46:40