具有继承类类型的通用列表的类

时间:2015-09-21 07:15:12

标签: c# asp.net oop polymorphism

我有3个课程:

某些主题的列表称为某种类型的后代。

我想在BaseHeaderFooterItem类中有一个泛型类。 和它的内容和列表类型。

有没有选择?

#region ParentItem
public class BaseHeaderFooterItem
{
    public string Title { get; set; }
    public string EnTitle { get; set; }
    public HyperLink Link { get; set; }
    public int Level { get; set; }
}
#endregion

#region HeaderFooter
public class HeaderFooter : BaseHeaderFooterItem
{
    public List<Category> Descendants { get; set; }
}
#endregion

#region HeaderFooter
public class Category : BaseHeaderFooterItem
{
    public List<Show> Descendants { get; set; }
}
#endregion

#region Header
public class Show : HeaderFooter
{
    public string ImagePath { get; set; }
    public string MobileLink { get; set; }
    public string MobileLinkTarget { get; set; }
}
#endregion

#region TvGuid
public class TvGuid : Show
{
    public string Date { get; set; }
    public string Time { get; set; }
    public int IsActive { get; set; }
    public int NoProgram { get; set; }
}
#endregion

1 个答案:

答案 0 :(得分:0)

如果您想使用泛型,可以使用泛型:

 #region ParentItem
    public class BaseHeaderFooterItem<T>
        where T:class 
    {
        public string Title { get; set; }
        public string EnTitle { get; set; }
        public HyperLink Link { get; set; }
        public int Level { get; set; }
        public List<T> Descendants { get; set; }
    }
    #endregion

    #region HeaderFooter
    public class HeaderFooter : BaseHeaderFooterItem<Category>
    {
    }
    #endregion

    #region HeaderFooter
    public class Category : BaseHeaderFooterItem<Show>
    {
    }
    #endregion

    #region Header
    public class Show : HeaderFooter
    {
        public string ImagePath { get; set; }
        public string MobileLink { get; set; }
        public string MobileLinkTarget { get; set; }
    }
    #endregion

    #region TvGuid
    public class TvGuid : Show
    {
        public string Date { get; set; }
        public string Time { get; set; }
        public int IsActive { get; set; }
        public int NoProgram { get; set; }
    }
    #endregion
相关问题