【问题标题】:MVVM: Where to Place Methods used by Most ViewModels?MVVM:将大多数 ViewModel 使用的方法放在哪里?
【发布时间】:2017-04-02 14:35:04
【问题描述】:

我有几个 ViewModel,它们通过一个简单的字符串参数运行一个进程。我希望他们都使用相同的方法来做到这一点,以免重复代码。

我正在考虑将这个方法放在 ViewModelBase 中,但是这样不会复制代码吗?

【问题讨论】:

  • 你认为为什么会复制代码?
  • 继承的目的是消除代码重复,使派生类使用相同的方法。所以ViewModelBase 在你的情况下似乎是正确的解决方案
  • 最简单的就是将方法添加到 ViewModelBase 中,然后你的所有视图都继承自它。这不会重复代码。

标签: c# wpf mvvm methods replication


【解决方案1】:

我正在考虑将这个方法放在 ViewModelBase 中,但是这样不会复制代码吗?

没有。在一个基类中定义一个方法怎么会导致代码重复?

如果您有一个可以被所有(或几乎所有)视图模型使用的方法,并且您还有一个所有视图模型都继承自的公共基类,那么在基类中定义公共方法听起来不错主意。这是首先使用公共基类的主要目的。

【讨论】:

    【解决方案2】:

    你写一个包含你想要调用的方法的小帮助类怎么样?

    【讨论】:

    • ViewModel 的好处之一(MVVM 模式)是可测试性。使用静态“助手”方法将消除“模拟”此方法的可能性。
    猜你喜欢
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-14
    • 2021-03-30
    • 1970-01-01
    相关资源
    最近更新 更多