我有一个来自强类型DataSet的DataTable,它在TableNewRow事件上有一个事件处理程序(用于初始化一些日期字段)
当我将此表保存到Session状态时,事件处理程序会正常触发,直到表的序列化为止。在从Session状态检索表时的后续请求中,事件处理程序不再触发。
这是正常的行为,我希望在反序列化时重新连接事件处理程序吗?如果是这样,既然没有办法检查是否添加了事件处理程序,那么进行重新布线的正确钩子是什么?
答案 0 :(得分:1)
根据您的序列化,您可以尝试通过OnDeserialized属性https://stackoverflow.com/a/4172266/1236044设置事件处理程序
对于Xml序列化,也许您可以尝试这样的事情:
public override void ReadXml (XmlReader reader)
{
base.ReadXml(reader);
NewRow+=....
}
答案 1 :(得分:0)
如何存储会话状态?如果它不是InProc,那么所有对象都被序列化并保存到某个数据库中。然后从反序列化中读取它们。这样就会丢失事件订阅。