Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 有没有一种技术可以检测那些被认为是不可序列化的、实际上已序列化的成员?_.net_Serialization_Event Handling - Fatal编程技术网

.net 有没有一种技术可以检测那些被认为是不可序列化的、实际上已序列化的成员?

.net 有没有一种技术可以检测那些被认为是不可序列化的、实际上已序列化的成员?,.net,serialization,event-handling,.net,Serialization,Event Handling,我有下一个问题:我有一个大对象图,它是二进制序列化的,有许多字段和事件标记为[NonSerializable]或[field:NonSerializable] 问题是,我仍然不知道从何处或为什么(复杂调用树),一些操作或Func(标记为[NonSerializable]并已分配lambdas)被序列化,正如您在创建的二进制文件中看到的那样 那么,我可以使用什么技术来检测“序列化泄漏”:我的代码中那些事件被钩住的成员?我会在这里使用反射,将每个属性/字段转换为相关类型(考虑列表和其他泛型),尝试构

我有下一个问题:我有一个大对象图,它是二进制序列化的,有许多字段和事件标记为[NonSerializable]或[field:NonSerializable]

问题是,我仍然不知道从何处或为什么(复杂调用树),一些操作或Func(标记为[NonSerializable]并已分配lambdas)被序列化,正如您在创建的二进制文件中看到的那样


那么,我可以使用什么技术来检测“序列化泄漏”:我的代码中那些事件被钩住的成员?

我会在这里使用反射,将每个属性/字段转换为相关类型(考虑列表和其他泛型),尝试构建模型中所需类型的完整列表。从那里,获取EventHandlerList或委托类型的所有字段(考虑基类,并尽可能考虑子类)。现在检查这些字段中是否有任何字段未标记为NonSerializedAttribute以忽略序列化


或者更简单:使用一个不写委托的序列化程序;XmlSerializer、JavascriptSerializer、DataContractSerializer中的任何一种,或者如果您需要直接二进制protobuf net。或者实际上是任何不是BinaryFormatter或NetDataContractSerializer的东西。

反序列化它并使用调试器查看它。使用xmlserializer代替二进制序列化程序来检查您是否认为正确。