Вы пробовали ModuleDependency?Мне нужно еще немного изучить MEF, но в Prism вы можете гарантировать, что инициализация одного модуля сработает раньше, чем другие, через ModuleDependency.
Например, если у вас был SomeOtherModule, которому во время инициализации требовался IService1, вымог бы убедиться, что SomeModule был инициализирован первым таким образом.
[ModuleDependency("SomeModule")]
public class SomeOtherModule : IModule
{
[Import]
public IService1 Service1 {get; set;}
public void Initialize()
{
//This ought to be populated now.
Service1.DoSomething();
}
}
Я полностью уточняю это, говоря, что я могу не знать какую-то внутреннюю работу MEF, которая этого не позволяет, но так все работаеткак правило, с помощью Prism.
Кроме того, когда я вижу зависимость, явную или неявную, я задаю себе вопрос:
- Будет ли служба использоваться несколькими модулями?Имеет ли смысл продвигать сервис как нечто, созданное в Bootstrapper и предоставляемое хост-приложением, а не другим модулем?
- Если нет # 1, если существует зависимость между модулями, являются ли эти модулилогически то же самое?Должны ли они быть объединены?Если один не может жить без другого, есть несколько причин не объединять их.
В любом случае, с этим последним нужно просто подумать.
Надеюсь, это поможет.