C# 泛型基类,参数化构造函数
本文关键字:构造函数 参数 泛型 基类 | 更新日期: 2023-09-27 17:56:41
我遇到这样一种情况:TabControl 的 ItemsSource 绑定到视图模型集合,然后为每个视图模型生成一个 TabItem。 每个选项卡项视图模型都将实现非常相似的基本功能(例如,与保存、新建、删除和重写 ToString() 等相关的命令)。
根据下面的代码示例,这是否是使用基类中的参数化构造函数构造子视图模型的正确方法? 我对泛型不太熟悉,但这种情况是否以某种方式适合泛型基类? 任何反馈将不胜感激。
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...
}
我认为并非如此。您的通用类型 T 有哪些不同的可接受类型?
ICommand
是你的抽象,无论视图模型的部分是什么,你的ICommand都应该足够了。
我也不确定你为什么有枚举?枚举不是与不同的派生类执行几乎相同的操作吗?