Загружать сериализованные объекты, когда известен только интерфейс класса - PullRequest
1 голос
/ 06 декабря 2011

Я пытаюсь добавить опцию для использования плагинов в моем приложении для обработки изображений в C #.

Я использовал метод Assembly.LoadFrom для загрузки библиотеки классов, затем искал интерфейс и использовал Activator.CreateInstance для создания экземпляра плагина, класса, который наследуется от интерфейса IPlugin, на который ссылаются в обеих сборках. , ( как в следующем примере ) Загрузка сборки работает нормально при реализации интерфейса IPlugin.

У меня также есть абстрактный класс в другой библиотеке классов для Обработка изображений , я назвал его ImageProcessingAction . Используя библиотеку обработки изображений, я могу создать список действий, которые нужно выполнить с изображением, и сохранить их в сериализованном файле, что прекрасно работает, но я также хочу добавить параметры для создания плагинов, реализующих этот абстрактный класс ( ImageProcessingAction ) по-другому, создавая новое действие (которое также отлично работает).

Настоящая проблема заключается в том, что я сериализую этот список действий. если я сериализирую список с одной из реализаций ImageProcessingAction плагина, он работает, но когда я десериализую его, метод выдает исключение, говорящее «Unable to найти сборку Plugin1», тот, который реализует IPlugin, и я только что создал экземпляр и сериализовал один его полей.

Я думаю, что могу лучше объяснить себя с картинкой : enter image description here

Я только что заметил, что десериализация не работает даже внутри плагина! То же исключение: «Невозможно найти сборку Plugin1». возможно, сборка выгружается до того, как я получу изменения для десериализации? но я могу сериализовать по некоторым причинам ...

Помощь будет высоко ценится, я попробовал все, и я до сих пор не знаю.

1 Ответ

2 голосов
/ 06 декабря 2011

«Невозможно найти сборку» с BinaryFormatter, вероятно, можно устранить с помощью выделенного Binder.

http://spazzarama.wordpress.com/2009/06/25/binary-deserialize-unable-to-find-assembly/

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