DataTable, сохраненный в состоянии Session, теряет обработчики событий - PullRequest
2 голосов
/ 23 марта 2012

У меня есть DataTable из строго типизированного DataSet, у которого есть обработчик события TableNewRow (для инициализации некоторых полей даты)

Когда я сохраняю эту таблицу в состоянии Session, обработчик событий срабатывает нормально, пока таблица не будет сериализована. При последующих запросах при извлечении таблицы из состояния сеанса обработчик событий больше не срабатывает.

Это нормальное поведение, и я ожидаю перепрограммировать обработчики событий при десериализации? Если так, то, поскольку нет способа проверить, был ли добавлен обработчик событий, каков правильный крючок для выполнения перемонтирования?

Ответы [ 2 ]

1 голос
/ 23 марта 2012

В зависимости от вашей сериализации вы можете попытаться установить обработчик событий с помощью атрибута OnDeserialized https://stackoverflow.com/a/4172266/1236044

Для сериализации Xml, возможно, вы можете попробовать что-то вроде этого:

public override void ReadXml (XmlReader reader)
{
    base.ReadXml(reader);
    NewRow+=....
}
0 голосов
/ 23 марта 2012

Как вы храните свое состояние сеанса? Если это что-то отличное от InProc, то все ваши объекты сериализуются и сохраняются в какой-либо базе данных. Затем они читаются из десериализованного. Таким образом, вы теряете подписки на события.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...