首页 > 解决方案 > 错误 CS0311 从树派生有序树

问题描述

我正在尝试创建一个MyOrderedTree从基类派生的类MyTree...

public class MyTree<T>
{
    public T                 Payload  { get; private set; }
    public MyTree<T>         Parent   { get; private set; }
    public MyList<MyTree<T>> Children { get; private set; }

    // Works
}

public class MyOrderedTree<T> : MyTree<T> where T : IComparable<T>
{
    public new MyOrderedList<MyOrderedTree<T>> Children {  get; private set; }   // Error CS0311

    private MyOrderedTree()
    {

    }

    public MyOrderedTree(T passed_payload) : base (passed_payload)
    {
        Children = new MyOrderedList<MyOrderedTree<T>>();                        // Error CS0311
    }

    // Works

}

列表类已定义....

public class MyList<T>
{
    // Works
}

我从中得出...

public class MyOrderedList<T> : MyList<T> where T : IComparable<T>
{
    // Works
}

问题在于它会产生此错误:

CS0311 The type 'MyOrderedTree<T>' cannot be used as type parameter 'T' in the generic type or method 
'MyOrderedList<T>'. There is no implicit reference conversion from 'MyOrderedTree<T>' to 
'System.IComparable<MyOrderedTree<T>>'.

我在列表中标记的地方,我不知道该怎么办。

我应该怎么做才能纠正这个?或者,如果这不是我正在尝试的正确方法,我应该优先做什么?

标签: c#oopgenericsinheritance

解决方案


推荐阅读