c# - 我可以简化这段代码吗?如果是这样的话

标签 c# simplification

我正在尝试向我的第一个 MVVM 程序添加多个命令。 但是我在这里添加它们的方式对我来说是错误的。 我想尽可能避免重复,例如,我可以制作一种我可以轻松修改的父命令吗?

internal class AddTimerBarCommand : ICommand
{
    public AddTimerBarCommand(MainViewModel viewModel)
    {
        _MainViewModel = viewModel;
    }

    private MainViewModel _MainViewModel;
    public event EventHandler CanExecuteChanged;

    public bool CanExecute(object parameter)
    {
        return true;
    }

    public void Execute(object parameter)
    {
        _MainViewModel.AddTimerBar();
    }
}

internal class RmvTimerBarCommand : ICommand
{
    public RmvTimerBarCommand(MainViewModel viewModel)
    {
        _MainViewModel = viewModel;
    }

    private MainViewModel _MainViewModel;
    public event EventHandler CanExecuteChanged;

    public bool CanExecute(object parameter)
    {
        return true;
    }

    public void Execute(object parameter)
    {
        _MainViewModel.RmvTimerBar();
    }

最佳答案

您是否正在寻找一个基类来减少代码重复?

如果是这样,这可能对你有用:

internal abstract class TimerBarCommandBase : ICommand
{
    public TimerBarCommandBase(MainViewModel viewModel)
    {
        _MainViewModel = viewModel;
    }

    protected MainViewModel _MainViewModel;
    public event EventHandler CanExecuteChanged;

    public bool CanExecute(object parameter) { return true; }

    public abstract void Execute(object parameter);
}

internal class AddTimerBarCommand : TimerBarCommandBase
{
    public AddTimerBarCommand(MainViewModel viewModel) : base(viewModel) { }

    public override void Execute(object parameter)
    {
        _MainViewModel.AddTimerBar();
    }
}

internal class RmvTimerBarCommand : TimerBarCommandBase
{
    public RmvTimerBarCommand(MainViewModel viewModel) : base(viewModel) { }

    public override void Execute(object parameter)
    {
        _MainViewModel.RmvTimerBar();
    }
}

关于c# - 我可以简化这段代码吗?如果是这样的话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33060910/

相关文章:

c# - 我如何获取一个字符串并每次从数组中返回一个字符串?

algorithm - 增量线简化

c# - 如何从我的 C# Windows 窗体应用程序的数据库中检索信息

c# - Linq toEntity DbQuery 对象严重失败

c# - 需要交换具体类时的依赖注入(inject) C#

c# - 应该向有经验的 OOP 程序员推荐什么脚本语言?

javascript - 实现基本的数学表达式简化器

python - xδ(x) 中 Dirac delta 的简化

algorithm - 需要图形简化算法建议

C++ 我可以用 1 个循环替换嵌套循环吗