C#通用基类,参数化构造函数

时间:2014-04-03 17:20:26

标签: c# generics constructor viewmodel

我有一种情况,TabControl的ItemsSource绑定到一组视图模型,然后为每个视图模型生成一个TabItem。每个Tab Item视图模型将实现非常相似的基本功能(例如,与Save,New,Delete和覆盖ToString()等相关的命令。)。

基于下面的代码示例,这是构建子视图模型的正确方法,在基类中使用参数化构造函数吗?我对Generics不太熟悉,但是这种情况是否会以某种方式适用于Generic基类?非常感谢任何反馈。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WpfApplication1
{
    public abstract class PartViewModel : ViewModelBase
    {
        public PartTypeEnum PartType { get; set; }

        ICommand Save { get; set; }
        ICommand New { get; set; }
        ICommand Delete { get; set; }

        public PartViewModel(PartTypeEnum partType)
        {
            PartType = partType;
        }

        public override string DisplayName
        {
            get { return this.ToString(); }
        }
        public override string ToString()
        {
            return EnumHelper.GetEnumDescription(PartType);
        }
    }

    public class Part1ViewModel : PartViewModel
    {
        public Part1ViewModel() : base(PartTypeEnum.Part1)
        {
        }
    }

    public class Part2ViewModel : PartViewModel
    {
        public Part2ViewModel() : base(PartTypeEnum.Part2)
        {
        }
    }

    // etc...
}

1 个答案:

答案 0 :(得分:0)

我不认为这样。您的泛型类型T的不同可接受类型是什么?

ICommand是您的抽象,无论ViewModel的哪一部分,您的ICommand都应该足够。

我也不确定你为什么要列举?枚举不是与不同的派生类完全相同吗?

相关问题