包装器属性从剪贴板IDataObject错误地反序列化

时间:2019-05-07 11:02:41

标签: c# serialization clipboard idataobject

这是我班上的两个属性。 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.
        }

你知道什么地方可能出问题吗?

0 个答案:

没有答案