C# 类型';System.Data.DataRow';在组装中';System.Data,版本=4.0.0.0,区域性=neutral,PublicKeyToken=b77a5c561934e089';未标记为可序列化

C# 类型';System.Data.DataRow';在组装中';System.Data,版本=4.0.0.0,区域性=neutral,PublicKeyToken=b77a5c561934e089';未标记为可序列化,c#,.net,serialization,clone,deep-copy,C#,.net,Serialization,Clone,Deep Copy,将对象序列化为流时出现以下错误 程序集System.Data中的类型System.Data.DataRow,版本=4.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089未标记为可序列化 通过读取异常,看起来对象中有一个未序列化的dataRow 如何识别导致代码出现此问题的dataRow 首先,您需要找到从何处调用此代码 在VisualStudio中,您可以右键单击函数名并单击“查找所有引用”-这将为您提供一个开始(请参阅) 另一个选项是在调试时使用,以找出调

将对象序列化为流时出现以下错误

程序集System.Data中的类型System.Data.DataRow,版本=4.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089未标记为可序列化

通过读取异常,看起来对象中有一个未序列化的
dataRow


如何识别导致代码出现此问题的
dataRow

首先,您需要找到从何处调用此代码

在VisualStudio中,您可以右键单击函数名并单击“查找所有引用”-这将为您提供一个开始(请参阅)

另一个选项是在调试时使用,以找出调用的来源


如果您试图克隆一个
数据表
,该方法可能就是您想要的。

如果您想序列化一个类的实例,该类必须标记为[Serializable]。DataRow未标记,因此无法序列化DataRow类型的对象。

找到了此问题的根本原因。。。在一个类文件中声明了一个全局dataRow变量。类被标记为序列化

删除该数据行后,问题已得到解决

谢谢


-Siva

ISerializable怎么样?这不需要您使用标记有属性的类…也可以使用,尽管这是用于专门的序列化。
System.Data.DataRow
未标记为,从中可以看出。您的克隆技术仅适用于如此标记的类型。要深度复制数据表,请使用。对于一个数据集来说,这里的人们直接对问题投下了反对票,而不是理解问题..微软论坛比这个好得多..我没有投反对票;如果在克隆时包含导致异常的示例类,stackoverflow可能会提供更多帮助。
internal static object CloneObject(object obj)
{
    MemoryStream ms = null;
    object objClone = null;

    try
    {
        // Create a memory stream and a formatter.
        ms = new MemoryStream();
        BinaryFormatter bf= new BinaryFormatter();

        // Serialize the object into the stream.
        bf.Serialize(ms, obj);
        // Position stream pointer back to first byte.
        ms.Seek(0, SeekOrigin.Begin);
        // De serialize into another object.
        objClone = bf.Deserialize(ms);
    }
    finally
    {
        // Release memory.
        if (ms != null)
            ms.Close();
    }
    return objClone;
}