2014-04-03 36 views
1

我有一种情况,其中一个TabControl的ItemsSource绑定到一个视图模型集合,然后生成一个TabItem为每个视图模型。每个Tab项目视图模型将实现非常相似的基本功能(例如,与保存,新建,删除和重写ToString()等相关的命令)。C#通用基类,参数化构造函数

基于下面的代码示例,这是构建子视图模型的正确方法,它具有基类中的参数化构造函数吗?我对泛型不太熟悉,但是这种情况是否适合泛型基类?任何反馈非常感谢。

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... 
} 
+2

首先,这与泛型无关。其次,从您向我们展示的代码中,没有迹象表明您正在使用枚举进行某些操作,除非得到它的字符串。在这种情况下,您可以传递名称而不是枚举。 – Euphoric

回答

0

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

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

我也不确定为什么你有一个枚举?枚举是否与不同的派生类具有相同的功能?

相关问题