自定义对象类型的跨进程拖放包含WinForms C#中XmlNode的排序列表

| 我遇到了与以下位置的用户发布类似的问题: WinForms C#中自定义对象类型的跨进程拖放 幸运的是,我已经弄清楚了如何序列化自定义对象的几乎所有部分,除了SortedList对象。 我需要这个对象,因为它包含一些对我的应用程序非常重要的信息,并且Xml嵌套非常混乱。 当我注释掉在ISerializable成员GetObjectData()中添加SortedList的行时,该对象将其转移到新应用程序中。当我将其保留时,它不会,而且我也无法弄清楚如何序列化它。 我在StackOverflow和Web上都做了一些查找,但没有发现任何用处。 我正在使用以下代码检查我的对象是否可序列化,以便可以将其拖放到另一个应用程序:
    /// <summary>
    /// Determine if object can be fully serializable to binary format.
    /// </summary>
    /// <param name=\"obj\"></param>
    /// <param name=\"errorMsg\">If return value false, contains reason for failure.</param>
    /// <returns></returns>
    public static bool IsSerializable(object obj, out string errorMsg)
    {
        errorMsg = \"\";

        using (MemoryStream mem = new MemoryStream())
        {
            BinaryFormatter bin = new BinaryFormatter();
            try
            {
                bin.Serialize(mem, obj);
                return true;
            }
            catch (Exception ex)
            {
                errorMsg = string.Format(\"Object cannot be serialized: {0}\", ex.ToString());
                return false;
            }
        }
    }
有人对我有什么建议吗?我想尽可能地在拖放过程中保持XmlNodes列表完整,但不会反对进行一些额外的编码以将其分解为可序列化的片段并在另一端进行重构。重要的是最终结果必须包含一个SortedList。 如果有必要,我可以提供我正在序列化的自定义对象的内容,以进行拖放(如果有帮助的话)。 谢谢, 凯尔·K。     
已邀请:
我终于想出了如何正确序列化我的对象。我使用的是XmlNodes的SortedList,发现XmlNode对象不可序列化。我将实现切换为包含字符串的SortedList,现在一切正常。 谢谢, 凯尔     

要回复问题请先登录注册