Альтернатива DLL как объектам (динамически заменяемые объекты) - PullRequest
0 голосов
/ 12 декабря 2008

У меня есть приложение, которое использует много различных управляемых .NET библиотек в качестве объектов (каждая DLL реализует общий интерфейс). Каждая DLL также имеет номер версии в имени файла.

Предположим, я создал объект "Shape ~ 01.dll." Приложение будет использовать эту DLL, но ее нельзя заменить во время работы приложения. Итак, если я хочу «обновить» dll формы, я должен создать «Shape ~ 02.dll», и приложение должно динамически искать и загружать новейшую dll каждый раз, когда создается фигура, и / или пользователь должен перезапустить приложение. Хуже того, каждая dll зависит от основного .exe, поэтому его нужно перестраивать с основным .exe.

Есть ли более простой способ иметь динамически «заменяемые» объекты?

Ответы [ 3 ]

0 голосов
/ 12 декабря 2008

Вы не упоминаете, на каком языке / платформе вы пытаетесь это сделать, поэтому я отвечу за .NET Framework.

Если вы хотите сделать сложный взгляд на Shadow Assemblies, это метод, который ASP.NET использует для обновления сайта, даже если он использует файлы.

Для более простого способа взгляните на новое пространство имен System.Addin , оно использует теневые сборки под капотом и должно делать то, что вы хотите.

0 голосов
/ 12 декабря 2008

Вместо опроса при создании объекта, почему бы просто не запросить уведомление у системы при изменении файловой системы?

Класс System.IO.FileSystemWatcher в .NET.

Для нативного кода есть несколько способов просмотра папки, но IANAND (я не нативный разработчик;).

Хотя, сказав это, вы, вероятно, захотите переосмыслить причину, по которой вам нужно так часто менять ваши объекты, потому что, вероятно, потребуется много работы, чтобы заставить это работать.

Вы использовали динамический тег, поэтому, возможно, вам стоит попробовать динамический язык? :)

0 голосов
/ 12 декабря 2008

Что ж, это не лучшее решение (все еще думая об этом), но вы можете выгрузить файлы dll, которые позволят их заменить. Это может быть быстрым решением, пока вы не придумаете лучшую идею.

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