SimpleMVVM and Generic ViewModelBase



我最近找到了SimpleMVVM工具包,并试图创建一个小示例程序。我正在尝试创建一个CurrentViewModel参数,如下所示:

    private ViewModelBase<>  _CurrentViewModel;
    public ViewModelBase<>  CurrentViewModel
    {
        get { return _CurrentViewModel; }
        set
        {
            _CurrentViewModel= value;
            NotifyPropertyChanged(m => m.CurrentViewModel);
        }
    }

任何被CurrentViewModel引用的对象都将扩展SimpleMVVM的ViewModelBase类,如下所示:

public class HomeViewModel : ViewModelBase<HomeViewModel>
{ }

我遇到的问题是SimpleMVVM ViewModelBase需要类型T作为参数,我不知道如何创建参数CurrentViewModel,以便它可以接受任何扩展ViewModelBase的ViewModel。

使用泛型' <T> '的一个问题是,任何消费者仍然必须知道类型。如果您考虑将ICollection添加到您的模型中,您必须知道它是一个什么集合,以便维护强类型。

唯一的例外是,如果你定义了一个本身是泛型的类,那么它可以将它的type属性传递给子类。例如

CustomCollection<T>
{
     ICollection<T> _foo;
}

要做你想做的事情将需要一个单独的公共接口,封装你想从CommonViewModel的功能。

相关内容

  • 没有找到相关文章

最新更新