Чтобы динамически добавлять функциональные возможности приложения, я в значительной степени полагаюсь на MEF, который является отличным инструментом для предоставления интерфейсов для сторонних сборок (плагинов). Но теперь я не только хочу иметь общий интерфейс для плагинов, к которым я могу получить доступ из своего основного приложения, но также предлагать интерфейс для плагинов, через которые они могут обращаться к различным ресурсам (таким как объекты) из моего основного приложения. Как это можно сделать? Я думаю о чем-то вроде API плагинов, но я не уверен, что MEF предлагает такую возможность.Общие ресурсы приложений в MEF
Есть два варианта, которые я имел в виду, для выполнения этой задачи:
- Пасс объектов в качестве параметров на плагин конкретизации
Drawback: Если я прохожу позволяет сказать, например, экземпляр объекта ведения журнала, который я использую в другом месте, сторонний плагин может легко вызвать Dispose, что делает его непригодным для всего приложения или других плагинов. Очень опасно!
- DECLARE глобально доступные статические методы