【问题标题】:Dynamically call dataservice in different modules depending on object type WPF MVVM c#根据对象类型WPF MVVM c#在不同模块中动态调用数据服务
【发布时间】:2018-03-29 09:31:49
【问题描述】:

在 WPF 中调用数据服务和组织模块化项目的最佳方式是什么?

我是 MVVM 和 WPF 的新手,我有一个项目至少:

  • 1 个主要的“组织者”模块
  • 10 个独立模块(已加载或未加载)
  • 每个模块中都有一个数据服务,用于对我的数据进行一些操作

我想知道它们是否可以在不使用 super_long_switch_case_of_death_with_redondant_code 的情况下从我的主管理器模块动态调用我的模块数据服务。实现这一目标的最佳方法是什么?

例如,当我单击我的一个项目(在树视图中)时,我会调用一个执行此功能的命令:

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 我正在寻找可以在命令中使用的东西来动态加载我的服务并通过我的模块获取项目。

【问题讨论】:

    标签: c# wpf mvvm module


    【解决方案1】:

    对于 Factory ,我通常使用 MEF。尽量不要具体实现,而是结合使用Interface和MEF框架。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-11
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-12
      • 1970-01-01
      • 2018-04-16
      相关资源
      最近更新 更多