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 を必要とし、ViewModelBase を拡張するすべての ViewModel を受け入れることができるようなパラメーター CurrentViewModel を作成する方法がわからないことです。

4

1 に答える 1

0

Generics ' <T>' の使用に関する問題の 1 つは、すべてのコンシューマーがその型を認識している必要があることです。モデルに ICollection を追加することを検討している場合は、厳密な型指定を維持するために、それが何のコレクションであるかを知る必要があります。

唯一の例外は、それ自体がジェネリックであるクラスを定義した場合で、そのクラスはその型プロパティを子クラスに渡すことができます。すなわち

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

あなたがやろうとしていることを行うには、CommonViewModel から必要な機能をカプセル化する別の共通インターフェイスが必要になります。

于 2014-07-21T12:28:42.267 に答える