Вот два свойства из моего класса.System.Windows.Media.Color
не сериализуемо, поэтому я создал для него свойство обертки строкового типа, пытаясь вместо этого его сериализовать.
//private string _SerializationTest;
public string SerializationTest {
get { return new ColorConverter().ConvertToString(_RgbColor); }
set { _RgbColor = (Color)ColorConverter.ConvertFromString(value); }
}
[NonSerialized]
private Color _RgbColor = Colors.Red;
public Color RgbColor {
get { return _RgbColor; }
set
{
if (_RgbColor != value)
{
_RgbColor = value;
NotifyPropertyChanged("RgbColor");
}
}
}
Я создал небольшой тест сериализации, чтобы показать проблему:
аргумент obj - это мой класс, который содержит 2 свойства выше.
public void SerializationTest(object obj)
{
IDataObject dataObj = new DataObject();
dataObj.SetData("Serial", obj);
Clipboard.SetDataObject(dataObj, false); //SerializationTest = "#FFFF0000" here
dataObj = Clipboard.GetDataObject();
var clipboardData = dataObj.GetData("Serial"); //SerializationTest = "#00000000" here. Incorrect value.
}
Есть идеи, что может быть не так?