Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C泛型基类,参数化构造函数_C#_Generics_Constructor_Viewmodel - Fatal编程技术网

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

C# C泛型基类,参数化构造函数,c#,generics,constructor,viewmodel,C#,Generics,Constructor,Viewmodel,我遇到过这样一种情况,TabControl的ItemsSource绑定到一个视图模型集合,然后为每个视图模型生成一个TabItem。每个选项卡项视图模型将实现非常相似的基本功能,例如,与Save、New、Delete和重写ToString等相关的命令 根据下面的代码示例,这是在基类中使用参数化构造函数构造子视图模型的正确方法吗?我对泛型不太熟悉,但是这种情况是否适合泛型基类呢?非常感谢您的反馈 using System; using System.Collections.Generic; usi

我遇到过这样一种情况,TabControl的ItemsSource绑定到一个视图模型集合,然后为每个视图模型生成一个TabItem。每个选项卡项视图模型将实现非常相似的基本功能,例如,与Save、New、Delete和重写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是您的抽象,无论ViewModel的哪个部分,您的ICommand都应该足够了


我也不确定你为什么有一个枚举?枚举与不同的派生类做的事情不是差不多吗?

首先,这与泛型无关。其次,从您向我们展示的代码来看,除了获取它的字符串外,没有任何迹象表明您正在使用enum进行操作。在这种情况下,您可以只传递名称而不是枚举。