作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想实现一个通用泛型类型,它可以有另一个泛型类型的集合,一个到无穷大。目标是使用这种类型来构建分层列表。所以它看起来像这样
public class BasicOverviewModel<T>
{
public T OverViewModel { get; set; }
public IEnumerable<BasicOverviewModel<new T>> ChildOverviewModelCollection { get; set; }
}
这完全有可能,还是我选择了错误的解决方案?谢谢...
最佳答案
您必须使用另一个泛型类型参数,在此代码中称为 TChild
。
父子关系变得有点复杂。这就是我的想法。
public interface IBasicOverviewModel
{
}
public class BasicOverviewModel<T, TChild> : IBasicOverviewModel where TChild : IBasicOverviewModel
{
public T OverViewModel { get; set; }
public IEnumerable<TChild> ChildOverviewModelCollection { get; set; }
}
public class EndpointOverviewModel<T> : IBasicOverviewModel
{
public T OverViewModel { get; set; }
}
static class Program
{
static void Main(string[] args)
{
var b = new BasicOverviewModel<string, BasicOverviewModel<int, EndpointOverviewModel<string>>>();
}
}
关于C# 泛型类,带有具有另一个类型属性的泛型集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49572823/
我是一名优秀的程序员,十分优秀!