Class 具有继承 class 类型的泛型列表 - 多重继承
Class with generic list of the inherited class type - multiinheritence
我之前在这个 link 中问过一个问题
现在,在下面的解决方案中。
在这种情况下,我怎样才能列出 TvGuid 的(后代)?
#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
您可以像这样实例化您的 BaseHeaderFooterItem class:
var baseHeaderFooterItem = new BaseHeaderFooterItem<TvGuid>();
baseHeaderFooterItem.Descendants = new List<TvGuid> { new TvGuid() };
因此后代的类型将是 List 。或者,您可以创建一个 class,它继承自 BaseHeaderFooterItem。它将具有相同的 List< TvGuid> 属性.
我之前在这个 link 中问过一个问题
现在,在下面的解决方案中。 在这种情况下,我怎样才能列出 TvGuid 的(后代)?
#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
您可以像这样实例化您的 BaseHeaderFooterItem class:
var baseHeaderFooterItem = new BaseHeaderFooterItem<TvGuid>();
baseHeaderFooterItem.Descendants = new List<TvGuid> { new TvGuid() };
因此后代的类型将是 List