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

C# 泛型基类,参数化构造函数

我认为并非如此。您的通用类型 T 有哪些不同的可接受类型?

ICommand是你的抽象,无论视图模型的部分是什么,你的ICommand都应该足够了。

我也不确定你为什么有枚举?枚举不是与不同的派生类执行几乎相同的操作吗?