Как сериализировать Список <объект>

Я пишу общие функции для сериализации данного объекта и Списка <объект> следующим образом

public string SerializeObject(Object pObject)// for given object
{
    try
    {
        String XmlizedString = null;
        MemoryStream memoryStream = new MemoryStream();
        XmlSerializer xs = new XmlSerializer(typeof(pObject));
        XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
        xs.Serialize(xmlTextWriter, pObject);
        memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
        XmlizedString = UTF8ByteArrayToString(memoryStream.ToArray());
        return XmlizedString;
    }
    catch (Exception e) { System.Console.WriteLine(e); return null; }
}

public string SerializeObject(List<Object> pObject)// for given List<object>
{
    try
    {
        String XmlizedString = null;
        MemoryStream memoryStream = new MemoryStream();
        XmlSerializer xs = new XmlSerializer(typeof(pObject));
        XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
        xs.Serialize(xmlTextWriter, pObject);
        memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
        XmlizedString = UTF8ByteArrayToString(memoryStream.ToArray());
        return XmlizedString;
    }
    catch (Exception e) { System.Console.WriteLine(e); return null; }
}

сначала каждый хорошо работает. Если я передаю какой-либо тип, он успешно возвращает строку xml.

ИСПРАВЛЕНИЕ: Ошибка компиляции произошла для второй (Ошибка: не может преобразовать из List<MyType> кому: List<object>.

Я переписываю второй следующим образом, который решает мою проблему. Теперь это сериализирует данный List<generic types>.

private string SerializeObject<T>(T source)
{
    MemoryStream memoryStream = new MemoryStream();
    XmlSerializer xs = new XmlSerializer(typeof(T));
    XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
    xs.Serialize(xmlTextWriter, source);
    memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
    string XmlizedString = UTF8ByteArrayToString(memoryStream.ToArray());
    return XmlizedString;
}
7
задан John Saunders 21 April 2010 в 01:09
поделиться

2 ответа

https://weblogs.asp.net/rajbk/Contents/Item/Display/345

Соответствующий код из статьи:

private static string SerializeObject<T>(T source)
{
    var serializer = new XmlSerializer(typeof(T));
    using (var sw = new System.IO.StringWriter())
    using (var writer = XmlWriter.Create(sw))
    {
        serializer.Serialize(writer, source);
        return sw.ToString();
    }
}
2
ответ дан 7 December 2019 в 14:30
поделиться

Я пробовал две ваши функции без много неприятностей. Единственное, что я изменил, - это строка:

XmlSerializer xs = new XmlSerializer(typeof(pObject));

на это:

XmlSerializer xs = new XmlSerializer(pObject.GetType());

typeof () требует фактического типа, тогда как GetType () возвращает тип объекта.

2
ответ дан 7 December 2019 в 14:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: