Типы обработки, определенные в плагинах, которые больше не доступны - PullRequest
0 голосов
/ 01 апреля 2010

Я занимаюсь разработкой приложения .NET Framework, которое позволяет пользователям поддерживать и сохранять «проекты». Проект может состоять из компонентов, типы которых определены в сборках самой платформы и / или в сборках сторонних производителей, которые будут доступны для платформы посредством еще не построенной архитектуры подключаемых модулей. Когда проект сохраняется, он просто сериализуется в двоичном формате в файл.

Проекты переносимы, поэтому несколько пользователей могут загружать один и тот же проект в свои собственные экземпляры инфраструктуры (так же, как разные пользователи могут открывать один и тот же документ MSWord в своих собственных локальных копиях MSWord). Более того, плагины, доступные для среды одного пользователя, могут быть недоступны для платформы другого.

Мне нужен какой-то способ гарантировать, что когда пользователь пытается открыть (т. Е. Десериализовать) проект, который включает тип, чья определяющая сборка не может быть найдена (из-за несовместимости версии фреймворка или отсутствия плагина) проект все еще открывается, но нарушающий тип каким-то образом заменен или опущен. Проблема в том, что исследование, которое я провел до настоящего времени, даже не намекает на подходящий подход. Любые идеи будут высоко оценены, спасибо.

Ответы [ 2 ]

0 голосов
/ 01 апреля 2010

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

0 голосов
/ 01 апреля 2010

Вам нужно будет создать свой собственный сериализатор, используя отражение.

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