Как определить тип XmlSerializer по типу объекта записи? - PullRequest
0 голосов
/ 08 февраля 2011

Проблема с кодом ниже, в этой строке:

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 = "";
    }
}

Ответы [ 2 ]

6 голосов
/ 08 февраля 2011

Каждый объект наследует метод GetType () от Object, поэтому вы должны иметь возможность использовать:

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

Ключевое слово C # typeof принимает имя класса и возвращает объектТип Тип.GetType () выдает то же самое, но вместо этого работает с экземпляром.

3 голосов
/ 08 февраля 2011

Вы пробовали это?

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