Ошибка сериализации при копировании и вставке из элемента управления Windows form в элемент управления WPF

0

Вопрос

У нас есть сериализуемый класс, который содержит данные из буфера обмена для передачи из элемента управления Windows в элемент управления WPF. Это сработало в framework 4.8 после преобразования в .Net 5 мы теперь получаем ошибку: Введите "System.RuntimeType" в сборке "Система".Частное.CoreLib, Версия=5.0.0.0, Культура=нейтральная, PublicKeyToken=7cec85d7bea7798e' не помечен как сериализуемый.

Это происходит в обработчике событий Drop в WPF в строке:

var tClip = e.Data.GetDataPresent(typeof(ClipboardDescriptor));

Где "е" - это Система.Windows.ДрагЕвентАрги.

using System;
using System.Windows.Forms;

namespace Support.Classes
{
    /// <summary>
    /// Summary description for ClipboardDescriptor.
    /// </summary>
    [Serializable]
    public class ClipboardDescriptor
    {
        private Guid id;
        private Guid parentDocumentID;
        private System.Type objtype;
        private TreeNode baseTreeNode;
        private string objname;

        public ClipboardDescriptor()
        {
            baseTreeNode = null;
        }

        public Guid ParentDocumentID
        {
            get { return(parentDocumentID); }
            set { parentDocumentID = value; }
        }

        public Guid ID
        {
            get { return(id); }
            set { id = value; }
        }

        public System.Type ObjType
        {
            get { return(objtype); }
            set { objtype = value; }
        }

        public string ObjName
        {
            get { return(objname); }
            set { objname = value; }
        }

        /// <summary>
        /// Get the treenode that this object is associated with
        /// </summary>
        public TreeNode BaseTreeNode
        {
            get { return(baseTreeNode); }
            set { baseTreeNode = value; }
        }
    }
}
.net-5 c# wpf
2021-11-22 21:52:28
1

Лучший ответ

0

Это и есть решение проблемы. В этом случае, к счастью, свойство TreeNode было ненужным, и можно было добавить свойство TypeName, чтобы из него можно было извлечь тип.

using System;

namespace JMPT.Support.Classes
{
    /// <summary>
    /// Summary description for ClipboardDescriptor.
    /// </summary>
    [Serializable]
    public class ClipboardDescriptor
    {
        public Guid ParentDocumentID { get; set; }
        public Guid ID { get; set; }
        [field: NonSerialized]
        public Type ObjType { get; set; }
        public string ObjName { get; set; }
        public string ObjTypeName { get; set; }
    }
}
  
2021-11-23 16:59:35

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................