0

我最近发现了 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。

4

1 回答 1

0

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

唯一的例外是,如果您定义了一个本身是通用的类,然后它可以将它的类型属性传递给子类。IE

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

要执行您想要执行的操作,需要一个单独的通用接口来封装您想要从 CommonViewModel 获得的功能。

于 2014-07-21T12:28:42.267 回答