C# 类型';System.Data.DataRow';在组装中';System.Data,版本=4.0.0.0,区域性=neutral,PublicKeyToken=b77a5c561934e089';未标记为可序列化
将对象序列化为流时出现以下错误 程序集System.Data中的类型System.Data.DataRow,版本=4.0.0.0,区域性=中性,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中,您可以右键单击函数名并单击“查找所有引用”-这将为您提供一个开始(请参阅) 另一个选项是在调试时使用,以找出调
dataRow
如何识别导致代码出现此问题的
dataRow
首先,您需要找到从何处调用此代码
在VisualStudio中,您可以右键单击函数名并单击“查找所有引用”-这将为您提供一个开始(请参阅)
另一个选项是在调试时使用,以找出调用的来源
如果您试图克隆一个
数据表
,该方法可能就是您想要的。如果您想序列化一个类的实例,该类必须标记为[Serializable]。DataRow未标记,因此无法序列化DataRow类型的对象。找到了此问题的根本原因。。。在一个类文件中声明了一个全局dataRow变量。类被标记为序列化
删除该数据行后,问题已得到解决
谢谢
-SivaISerializable怎么样?这不需要您使用标记有属性的类…也可以使用,尽管这是用于专门的序列化。
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;
}