VB.NET затрудняет сериализацию классов с прикрепленными событиями - PullRequest
0 голосов
/ 28 января 2010

Удивлен, этот вопрос еще не задавался здесь, но здесь идет:

Сериализация в VB.NET - это немного больно. Если вы используете стандартный атрибут Serializable () и пытаетесь сериализовать класс, события которого связаны с обработчиками, он также попытается сериализовать обработчики.

Исходя из C # фона, я не привык иметь дело с этой проблемой, и лучшее решение, которое я могу найти, это использовать класс из CodeProject.

Однако я бы не стал менять структуру наследования объектов для этой идеи.

Каков стандартный способ сериализации классов, созданных в VB.NET?

Я слышал об удалении всех обработчиков, сериализации, затем повторном добавлении всех обработчиков, но разве это не могло привести к запуску событий и невозможности их обработки?

1 Ответ

2 голосов
/ 28 января 2010

В C # решение состоит в том, чтобы применить NonSerializedAttribute к полю поддержки события, используя префикс field: в атрибуте. К сожалению, VB не поддерживает трюк field:, поэтому вам нужно сделать поле поддержки события явным и применить к нему NonSerializedAttribute. У Роки Лхотки есть пример кода для этого.

К сожалению, это выглядит довольно многословно и утомительно, так как теперь вам нужно прописать методы добавления, удаления и поднятия для каждого события.

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