WPF在视图中或在单独的类中继承接口

时间:2017-11-05 14:12:40

标签: c# wpf inheritance

我正在制作媒体播放器计划,我有以下界面:

public interface IMediaService
{
    void Play();
}

MediaElement控件所在的视图中继承接口并在方法的实现中直接访问它是否更合适,或者将它放在一个单独的类中:

public class MediaPlayer : IMediaService
{
    private MediaElement _mediaElement;
    public MediaPlayer(MediaElement mediaElement)
    {
        _mediaElement = mediaElement;
    }

    public void Play()
    {
        _mediaElement.Play();
        //...
    }
}

vs在视图中继承它:

public partial class MainWindow : IMediaService
{
    public MainWindow()
    {
        InitializeComponent();
    }

    void IMediaService.Play()
    {
        Player.Play();
        //..
    }
}

我没有使用MVVM,但这些方法可能会被用作命令绑定。

我在第二种方法中看到的问题是我的视图类会非常快速地混乱。

我对任何我未提及的替代解决方案持开放态度,这正是我提出的那个问题。

1 个答案:

答案 0 :(得分:1)

  

在MediaElement控件所在的视图中继承接口并在方法的实现中直接访问它是否更合适,或者将它放在一个单独的类中,如下所示:

就MVVM而言,它并不重要。真的没有对错。这取决于开发者的个人偏好。如果您不想污染视图,则需要创建一个单独的类。如果您不介意在视图中添加一些方法,那么就不要这样做。

使用单独类的好处是您可以将其重用于多个不同的视图/ MediaElement

但是视图模型只关心接口本身,即它不依赖于它的实际实现。