我想声明一个继承通用类并实现接口的类,例如:

public class SortableObject
{
    int compare(SortableObejct obj);
}

public class List<T> where T is class
{
    public void add(T obj);
    public T peekCurrent();
}

public class SortedList<T> : List<T> where T : SortableObject, SortableObject
{
    public override int compare(SortableObejct obj);
}


我想SortedList<T>List<T>继承并从SortableObject实现,其中TSortableObject的子类。 C#编译器无法编译此类。在我看来,语法不支持这种情况。

有人会遇到这样的困难并找到解决办法吗?

最佳答案

只需使SortableObject实现一个接口即可:

public interface ISortableObject
{
    int compare(SortableObejct obj);
}

public class SortableObject : ISortableObject
{
    int compare(SortableObejct obj);
}

public class SortedList<T> : List<T> where T : SortableObject


这将确保如果实际上是SortableObject,则它已实现ISortableObject接口。

10-04 17:56