1
Я пытаюсь преобразовать список 3 в уникальный XML-файл. Мой проект - это UWP, и я написал метод, но он теперь сериализует только 1 список. Как я мог бы сериализовать 3 списка с помощью моего метода.C# сериализуйте более одного списка в одном и том же файле xml
Мой текущий метод сериализации:
public static async void SaveObjectToXml<T>(T objectToSave)
{
//<-----------FilePicker------------------>
var savePicker = new Windows.Storage.Pickers.FileSavePicker();
savePicker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.DocumentsLibrary;
savePicker.FileTypeChoices.Add("New File", new List<string>() { ".xml" });
savePicker.SuggestedFileName = "New File";
StorageFile newfile = await savePicker.PickSaveFileAsync();
//<-----------FilePicker------------------>
//<----------------Serializacion------------------>
var serializer = new XmlSerializer(typeof(T));
Stream stream = await newfile.OpenStreamForWriteAsync();
using (stream)
{
serializer.Serialize(stream, objectToSave);
}
//<----------------Serializacion------------------>
}
Мои списки:
public class List1 : BindableBase
{
private int _Property1;
public int Property1
{
get { return _Property1; }
set { SetProperty(ref _Property1, value); }
}
private bool _Property2;
public bool Property2
{
get { return _Property2; }
set { SetProperty(ref _Property2, value); }
}
private bool _Property3;
public bool Property3
{
get { return _Property3; }
set { SetProperty(ref _Property3, value); }
}
}
public class List2 : BindableBase
{
private bool _Property1;
public bool Property1
{
get { return _Property1; }
set { SetProperty(ref _Property1, value); }
}
private bool _Property2;
public bool Property2
{
get { return _Property2; }
set { SetProperty(ref _Property2, value); }
}
}
public class List3 : BindableBase
{
private double _Property1;
public double Property1
{
get { return _Property1; }
set { SetProperty(ref _Property1, value); }
}
private double _Property2;
public double Property2
{
get { return _Property2; }
set { SetProperty(ref _Property2, value); }
}
private double _Property3;
public double Property3
{
get { return _Property3; }
set { SetProperty(ref _Property3, value); }
}
private double _Property4;
public double Property4
{
get { return _Property4; }
set { SetProperty(ref _Property4, value); }
}
}
public class Values_List1 : ObservableCollection<List1>
{
}
public class Values_List2 : ObservableCollection<List2>
{
}
public class Values_List3 : ObservableCollection<List3>
{
}
public static class ApplicationServices
{
public static Values_List1 List1 = new Values_List1();
public static Values_List2 List2 = new Values_List2();
public static Values_List3 List3 = new Values_List3();
static ApplicationServices()
{
}
}
List1.Add(new List1()
{
Property1 = 1,
Property2 = true,
Property3 = false,
});
List2.Add(new List2()
{
Property1 = true,
Property2 = false,
});
List3.Add(new List3()
{
Property1 = 3.564,
Property2 = 0.215,
Property3 = 0.7252,
Property3 = 23.463,
});
I wanna get something similar to this:
<?xml version="1.0" encoding="utf-8"?>
<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<List1>
<Property1>1</Property1>
<Property2>true</Property2>
<Property3>false</Property3>
<ToAcero>0.1</ToAcero>
</List1>
<List2>
<Property1>true</Property1>
<Property2>true</Property2>
</List2>
<List3>
<Property1>3.564</Property1>
<Property2>0.215</Property2>
<Property3>0.7252</Property3>
<Property4>23.463</Property4>
</List3>
</Root>
Любая помощь приветствуется.
Кажется более логичным для меня сериализовать списки как массив не как объект-оболочку со свойствами. – serhiyb
Спасибо, я делаю это, но мой метод возвращает ошибку: «myCompoundClass - это тип, который недопустим в данном контексте». – Julius
@Julius вы можете опубликовать код, в котором вы используете это решение? –