Свойства обертки неправильно десериализованы из буфера обмена IDataObject - PullRequest
0 голосов
/ 07 мая 2019

Вот два свойства из моего класса.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.
        }

Есть идеи, что может быть не так?

...