根据对象类型在不同模块中动态调用dataservice WPF MVVM c#

问题描述:

在WPF中调用dataservices并组织模块化项目的最佳方式是什么?根据对象类型在不同模块中动态调用dataservice WPF MVVM c#

我在MVVM和WPF相当新的,我有一个项目,至少包括:

  • 1主“组织者”模块
  • 10独立的模块(其被加载与否)
  • 一DataService的每个模块中做一些操作我的数据

我想知道,如果他们是一个方法来调用从我的主要组织者模块我模块DataService的动态,而无需使用super_long_switch_cas e_of_death_with_redondant_code。达到此目的的最佳方法是什么?

对于为例,当我在我的项目的一个点击(在一个TreeView),我把它执行此功能的命令:

private void AddNewThingsCommand(object myObject) 
{ 
     if (myObject== null) return; 

     var objectType = myObject.GetType().ToString(); 
     switch (objectType) 
     { 

      case "FirstObjectType": 

       ModuleFirst.Services.ModuleFirstDataService moduleFirstDataService = new ModuleFirst.Services.ModuleFirstDataService(); 
    moduleFirstDataService.DoSomeSuperActionInMyDataService(someObject); 
       break; 
      case "SecondObjectType": 

       ModuleSecond.Services.ModuleSecondDataService ModuleSecondDataService = new ModuleSecond.Services.ModuleSecondDataService(); 
    ModuleSecondDataService.DoSomeRandomSuperActionInMyDataService(someObject2); 
       break; 

      default: 
       break; 
     } 

} 

但它似乎是真正的重复和无用的东西做的,你有任何想法如何自动化?

我不需要WPF Trigger based on Object Type我正在寻找一些我可以在命令中使用的动态加载我的服务并通过我的模块获取项目的东西。

对于工厂,我通常使用MEF。尝试使用Interface和MEF框架的组合,而不是具体实现。

关于MEF: https://docs.microsoft.com/en-us/dotnet/framework/mef/