C# BinaryFormatter中的TargetInvocationException,没有任何数据或程序集问题
我面前有一段代码,使用BinaryFormatter实现Clone()操作:C# BinaryFormatter中的TargetInvocationException,没有任何数据或程序集问题,c#,.net,serialization,C#,.net,Serialization,我面前有一段代码,使用BinaryFormatter实现Clone()操作: public object Clone() { MemoryStream stream = new MemoryStream(); BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, this); stream.Position = 0; object result = fo
public object Clone()
{
MemoryStream stream = new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, this);
stream.Position = 0;
object result = formatter.Deserialize(stream);
return result;
}
(不,我没有写信,也没有背书)。使用此方法的人遇到这样一种情况:对该方法的调用导致来自反序列化(流)
调用的TargetInvocationException
。InnerException
是一个NullReferenceException
让这个特别有趣的是——有趣到可以寻求帮助——我无法访问被克隆的对象是什么
我突然想到,由于所有内容都在内存中,并且序列化(…)
调用成功,内存中的数据应该是有效的,并且可以正确地反序列化。不存在不匹配或缺少程序集或数据损坏的情况
序列化对象可能包含事件和/或委托,但我的印象是,如果这些事件和/或委托导致任何问题,Serialize(…)
调用将失败
有人知道这可能是什么原因吗?我对此完全不知所措。实现ISerializable接口的类可以在序列化/反序列化时运行任意代码。NullReferenceException的堆栈跟踪是什么?使用调试器。和Debug+Exception,勾选抛出的框。原因可能与-,有趣的是,你可能永远都不知道:)