Вы можете использовать mef, но это может быть немного неуклюжим в зависимости от вашего сценария.
Из вашего описания кажется, что экземпляр пользовательского элемента управления - это тот, кто решает, какие дополнительные компоненты загрузить.
Mef обычно используется, когда цель thing
не знает точно, чего она хочет, только то, что она хочет, реализует некоторый интерфейс (или контракт, если быть более точным).
Например, ваш пользовательский элемент управления может знать, что он хочет выполнить поиск, но не совсем так.Тогда у вас будет интерфейс для поиска, возможно, с одним методом поиска (строка).У вашего элемента управления будет свойство этого типа, и mef заполнит его экземпляром, который mef обнаружил в какой-либо другой сборке.
Вы можете определить контракты для различных "областей" вашего элемента управления и заполнить их.однако, для этого уже есть рамки, такие как Prism , на которые вы должны взглянуть, по крайней мере, для справки.
Я предлагаю просмотреть документы MSDN для MEF. и посмотрите, применимы ли они к вашему сценарию