У меня есть хост-приложение, которое контролирует различные фабричные классы, которые производят реализации общего контракта на данные. Кроме того, все фабрики происходят из определенного фабричного контракта. Фабрикам могут потребоваться конкретные реализации контракта данных для генерации своих собственных объектов ... поэтому хост может в общем случае передавать данные через функцию в контракте фабрики, которая имеет один аргумент типа контракта данных. Затем фабрики пытаются привести его к тому типу, который им интересен ... игнорируя его, если он не совпадает. Пока все работает нормально.
Я хотел бы расширить это, чтобы позволить пользователям создавать фабрики надстроек с использованием инфраструктуры надстроек .NET, но меня беспокоит границы изоляции ... Например, если фабрика создает экземпляр IData, может другой объект приведения объекта, созданный надстройкой к общему конкретному типу реализации? Похоже, что необходимость в адаптерах в конвейере надстроек может все испортить?
Например, на диаграмме ниже конкретный класс DataA будет совместно использоваться PluginA и PluginB, а конкретный класс DataB будет совместно использоваться PluginB и PluginC.
Edit:
До сих пор я знал только о функциональности System.Addin для создания надстроек ... и более старых методах, использующих прямое отражение. Я только что обнаружил MEF, который якобы не имеет отношения к границам изоляции, которые являются ядром для System.Addin. Кто-нибудь с опытом работы с MEF знает, как это может повлиять на мой сценарий?