В нашем приложении призмы нам нужно загрузить модуль в центральную панель, когда пользователь щелкает элемент в дереве (отдельный модуль).Модуль в центральной панели (скажем, модуль конструктора) может открывать файл и отображать себя, если ему указан путь.Как я могу передать путь файла к этому модулю?Например,
в модуле Designer
public DesignerViewModel(DataAccess dataAccess)// This will be injected
{
}
//The following class can create the model objects using the IDataService for getting data from remote location
public DataAccess(IDataService service)//this will be injected
{
}
Объект доступа к данным является локальным по отношению к модулю Designer, поэтому я не хотел бы выставлять его вне модуля.Таким образом, регистрация выполняется в модуле
public class DesignerModule : IModule
{
public void Initialize()
{
var container = ServiceLocator.Current.GetInstance<IUnityContainer>();
container.RegisterType<Object, DesignerView>("DesignerUI");
container.RegisterType<DataAccess>();
}
}
IDataService регистрируется на уровне приложения
public class BootStrapper : UnityBootstrapper
{
protected override void ConfigureContainer()
{
base.ConfigureContainer();
Container.RegisterType<IDataService, DataService>();
}
}
Обратите внимание, что IDataService является единым целым для всего приложения.Я не могу передать путь к файлу, который является специфическим для экземпляра модуля в IDataService.Обратите внимание, что вы можете открыть любое количество модулей в центральной панели, как вам угодно, просто нажмите на элемент дерева -> дерево вызовет событие с выбранным идентификатором элемента -> приложение найдет путь, соответствующий идентификатору элемента, и вызоветмодуль.
Как мне пройти путь, когда я скажу _regionManager.AddToRegion ("CenterRegion", DesignerModule);Prism прекрасно выполнит все инъекции зависимостей, но как пройти путь - большой вопрос?