我想声明一个继承通用类并实现接口的类,例如:
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
实现,其中T
是SortableObject
的子类。 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
接口。