Я пытаюсь сериализовать два возражения списка на SQL Server.Пустой массив, сериализованный при сериализации в XML
Это мой сериализации код:
public static string SerializeToXml<T>(this T value)
{
var writer = new StringWriter(CultureInfo.InvariantCulture);
var serializer = new XmlSerializer(typeof(T));
serializer.Serialize(writer, value);
return writer.ToString();
}
Когда следующее свойство сериализации и затем сохранены, все выглядит отлично:
this.IPHostList = liveHostIps.SerializeToXml<List<string>>();
Но когда я пытаюсь это с помощью пользовательского класса, я не получить никаких данных.
this.MyClassList = MyClassContainer.SerializeTpXml<List<MyClass>>();
В качестве примера того, что я вижу в моей базе данных для неисправного элемента:
<ArrayOfMyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
Пример того, что я вижу, от успешного пункта:
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>192.168.1.4</string>
<string>192.168.1.5</string>
</ArrayOfString>
Я попытался сериализации для XML в интересах просмотра данных в базе данных, но при необходимости я могу просто конвертировать в base64.
Любые мысли о том, почему мой пользовательский класс не сохраняется? Мой пользовательский класс:
[Serializable]
public class MyClass
{
public bool prop1{get;set;}
public Nullable<System.Guid> prop2 {get;set;}
public string prop3 {get;set;}
}
Обратите внимание, что я не получаю ошибки в коде - просто, что мой XML массив хранится в базе данных не существует.
Опубликовать свой собственный класс, но, скорее всего, это потому, что ваш пользовательский класс не помечен как сериализуемый. – cgotberg
Добавлено. Желание было простым способом отладить это. – appsecguy
Как в стороне, 'StringWriter' реализует интерфейс' IDisposable', поэтому весь ваш вызов и его использование должны быть завернуты в блок 'using'. –