簡體   English   中英

C#通用基類,參數化構造函數

[英]C# Generic Base Class, Parameterized constructor

我遇到的情況是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是您的抽象,無論ViewModel的哪一部分,您的ICommand都足夠。

我也不確定為什么要進行枚舉? 枚舉與不同的派生類所做的事情差不多嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM