如何通过记录对象的类型定义XmlSerializer的类型?

001*_*001 0 .net c# xml-serialization

以下代码问题,在这一行:

XmlSerializer x = new XmlSerializer(typeof(????)); 
Run Code Online (Sandbox Code Playgroud)

我希望记录对象定义类型,我可以这样做吗?

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 = "";
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 6

每个对象都从Object继承GetType()方法,因此您应该能够使用:

XmlSerializer x = new XmlSerializer(RecordObject.GetType());
Run Code Online (Sandbox Code Playgroud)

C#typeof关键字获取类名并生成Type类型的对象.GetType()产生相同的东西,但是在一个实例上运行.

  • +1 表示带有*解释*的答案,而不仅仅是一行代码。 (2认同)