我想实现一个通用的泛型类型,它可以有另一个泛型类型的集合,所以一个到无穷大。目标是使用这种类型来构建分层列表。所以它看起来像这样

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/

10-12 12:37
查看更多