Czy ktoś spotkał się z bledną serializacja obiektów w mono?
Kod
----------------------------------------------------------
namespace QCCTV
{
[XmlRoot("AppSetting")]
public class AppSettings
{
public bool toolboxVisible = false;
public List<DeviceSetting> deviceSettings = null;
public AppSettings ()
{
toolboxVisible = false;
deviceSettings = new List<DeviceSetting>();
}
public void SaveToFile (string path)
{
try {
var serializer = new XmlSerializer (typeof(AppSettings));
using (var file = new FileStream(path, FileMode.OpenOrCreate)) {
using (StreamWriter stream = new StreamWriter(file, Encoding.UTF8)) {
Console.WriteLine (stream.ToString ());
serializer.Serialize (stream, this);
}
}
Console.WriteLine ("Settings save to: " + path + " ");
} catch (Exception e) {
Console.WriteLine ("Can`t save settings: " + path + " " + e.Message);
}
}
public static AppSettings LoadFromFile (string path)
{
try {
var serializer = new XmlSerializer (typeof(AppSettings));
AppSettings settings = null;
using (var file = new FileStream(path, FileMode.Open)) {
using (StreamReader stream = new StreamReader(file, Encoding.UTF8)) {
settings = serializer.Deserialize (stream) as AppSettings;
}
}
Console.WriteLine ("Settings loaded from: " + path + " ");
return settings;
} catch (Exception e) {
Console.WriteLine ("Can`t load settings: " + path + " " + e.Message);
}
return new AppSettings();
}
}
}
------------------------------------------------------------
Wynik powinnien byc jak ponizej
<?xml version="1.0" encoding="utf-8"?>
<AppSetting xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<toolboxVisible>false</toolboxVisible>
<deviceSettings>
<DeviceSetting>
<DeviceName>CAM1</DeviceName>
<DriverName>JPG Camera Driver</DriverName>
<DeviceURI>192.168.161.2</DeviceURI>
<DeviceLogin>admin</DeviceLogin>
<DevicePassword>Abra0906</DevicePassword>
</DeviceSetting>
<DeviceSetting>
<DeviceName>CAM2</DeviceName>
<DriverName>JPG Camera Driver</DriverName>
<DeviceURI>192.168.161.7</DeviceURI>
<DeviceLogin>admin</DeviceLogin>
<DevicePassword>Abra0906</DevicePassword>
</DeviceSetting>
<DeviceSetting>
<DeviceName>CAM3</DeviceName>
<DriverName>MJPG Camera Driver</DriverName>
<DeviceURI>192.168.1.10</DeviceURI>
<DeviceLogin>admin</DeviceLogin>
<DevicePassword>Abra0906</DevicePassword>
</DeviceSetting>
<DeviceSetting>
<DeviceName>CAM4</DeviceName>
<DriverName>USB Camera Driver</DriverName>
<DeviceURI />
<DeviceLogin />
<DevicePassword />
</DeviceSetting>
</deviceSettings>
</AppSetting>
---------------------------------------------------------------
Ale czasami plik ma błędy np.
---------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<AppSetting xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<toolboxVisible>false</toolboxVisible>
<deviceSettings>
<DeviceSetting>
<DeviceName>CAM1</DeviceName>
<DriverName>JPG Camera Driver</DriverName>
<DeviceURI>192.168.161.2</DeviceURI>
<DeviceLogin>admin</DeviceLogin>
<DevicePassword>Abra0906</DevicePassword>
</DeviceSetting>
<DeviceSetting>
<DeviceName>CAM2</DeviceName>
<DriverName>JPG Camera Driver</DriverName>
<DeviceURI>192.168.161.7</DeviceURI>
<DeviceLogin>admin</DeviceLogin>
<DevicePassword>Abra0906</DevicePassword>
</DeviceSetting> Setting>
<DeviceSetting>
<DeviceName>CAM3</DeviceName>
<DriverName>MJPG Camera Driver</DriverName>
<DeviceURI>192.168.1.10</DeviceURI>
<DeviceLogin>admin</DeviceLogin>
<DevicePassword>Abra0906</DevicePassword>
</DeviceSetting>
<DeviceSetting>
<DeviceName>CAM4</DeviceName>
<DriverName>USB Camera Driver</DriverName>
<DeviceURI />
<DeviceLogin />
<DevicePassword />
</DeviceSetting>
</deviceSettings>
</AppSetting> pSetting>
--------------------------------------------------------------
Podejrzewam kodowanie znaków. (ale niby zapisuje jako UTF8)
Nie używam wątków, wiec raczej niemożliwe jest żeby dwa watki zapisywały te same dane do pliku.
--------------------------------------------------------------
Nie mam pomysłu wiec wszystko idee mile widziane