Проблемы с двоичной разделением .net, когда интерфейс используется совместно, но не с реальными классами. - PullRequest
2 голосов
/ 06 июля 2011

Хорошо, моя конкретная ситуация довольно необычная - у меня есть два приложения. Основной сохраняет и загружает объекты в файл, используя стандартную двоичную сериализацию .NET. Второй загружается из того же файла, однако ему просто не требуется половина сохраненных классов - он просто хочет извлечь нужные классы.

Проблема возникла из-за того, что я хотел, чтобы не включал одинаковые классы в обоих приложениях, поэтому я выделил нужные мне биты и просто убедился, что интерфейс находится в DLL, общей для обоих приложений.

Все было хорошо, пока мне не потребовалась десериализация во втором приложении, двоичный десериализатор не распознал интерфейс. (жалуясь, что не смог найти сборку)

1 Ответ

2 голосов
/ 06 июля 2011

Я нашел часть своего ответа - «AllowAllAssemblyVersionsDeserializationBinder» ... Это очень мощный способ перехватить двоичную сериализацию, и он позволил мне «набирать своп» на оригинальный класс с его интерфейсом. Это позволило продолжить десериализацию (т.е. загрузить мой файл), а затем удалить ненужные объекты. Это также позволяет мне более эффективно решать проблемы с версиями между различными файлами.

Здесь хороший пробежка: http://spazzarama.wordpress.com/2009/06/25/binary-deserialize-unable-to-find-assembly/

Так что я упоминаю это здесь, потому что другие могут найти его полезным, плюс я уверен, что что-то не так, когда неясный поиск «AllowAllAssemblyVersionsDeserializationBinder» не дает ответов на StackOverflow - это как раз тот тип вопроса / ответа, который необходимо упомянуть:)

[Примечание: я упоминаю, что это частично решает мою проблему - один класс, который я хочу «разделить», но для которого нужны только значения интерфейса, а не полный класс, все еще не десериализует фактические значения - так что все еще нужно выяснить, Я должен использовать абстрактные классы и т. Д.]

[Примечание 2: я использовал двоичную сериализацию как быстрое исправление для ускорения разработки, пока я разбираюсь с полным дизайном, поэтому я надеюсь, что основная работа по разработке продвигается, и мне не нужно полагаться на двоичный сериализатор в первую очередь ...]

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