Существует приложение, которое имеет два модуля Module1 и Module2.
Вы говорите следующее
public ShellView(IUnityContainer container, IRegionManager regionManager, IEventAggregator eventAggregator, IModule1 mod1, IModuel2 mod2)
{
}
лучше, чем этот
public ShellView(IUnityContainer container, IRegionManager regionManager, IEventAggregator eventAggregator)
{
}
public class IModule1 : IModule
{
public void Initialize()
{
var container = ServiceLocator.Current.GetInstance<IUnityContainer>();
var regionManager = ServiceLocator.Current.GetInstance<IRegionManager>();
regionManager.RegisterViewWithRegion("Region1", typeof(Module1View));
}
}
public class IModule2 : IModule
{
public void Initialize()
{
var container = ServiceLocator.Current.GetInstance<IUnityContainer>();
var regionManager = ServiceLocator.Current.GetInstance<IRegionManager>();
regionManager.RegisterViewWithRegion("Region2", typeof(Module2View));
}
}
То, как можно сделать проект, зависит от многих факторов. Например, я могу выбрать второй подход со ссылкой
Модульность
Второй подход более слабосвязан, чем первый. Первый подход заставляет приложение объявлять модули, которые оно собирается использовать.
Я могу решить, что мое приложение будет определять только регионы, и позже я создам модули и добавлю представления в соответствующие регионы.
Я не говорю, что это абсолютно так, поскольку вы можете очень хорошо выбрать первый подход, сказав, что у самих модулей не будет никакой ссылки на то, где он будет использоваться, этот подход является более модульным. Все, что я говорю, это то, что есть варианты того, как решить проблему, и ограничение вариантов, как правило, не очень хорошая идея.