Serialize JSON ListView

261
16 сентября 2021, 17:20

Подскажите, как исправить ошибку, всё никак не получается.

System.Runtime.Serialization.SerializationException: 'The data contract type 'System.Windows.Forms.ListView' is not serializable with DataContractJsonSerializer because the data member 'Padding' is duplicated in its type hierarchy.'

public void Serialize<T>(T list, string path)
{
    var jsonFormatter = new DataContractJsonSerializer(typeof(T));
    using (var file = new FileStream(path, FileMode.Create))
    {
        jsonFormatter.WriteObject(file, list);
    }
}

Возможно кто-то подскажет, может у вас уже есть метод сериализации и десериализации, чтобы можно было передавать обьекты любого типа?

Answer 1

Ошибка тебе говорит что 'System.Windows.Forms.ListView' сериализовать невозможно.

Сериализуй не сам компонент формы, а его datasource, в котором хранятся данные для ListView. Например, храни данные для ListView в каком-то List<> (присвоив его в SomeListView.DataSource) и уже этот лист пытайся сериализовать.

UPD: если нету в ListViewDataSource то используй аналогичный компонент, например DataGrid. Там точно есть DataSource.

READ ALSO
Целесообразность фабричного метода

Целесообразность фабричного метода

Допустим, есть некоторая иерархия классов, где каждый последующий класс наследуется от предыдущего

252
Делегаты и события

Делегаты и события

Создать класс Банк, с использование события ввода пин-кода(если неверный, повторить попытку) снятие и пополнение на счетКласс создал, но с пин-кодом...

297