我正在尝试处理更复杂的继承结构和泛型,并且我正在尝试为遵循此诉讼的当前项目创建一些架构。我目前的问题是我收到此错误:
类型参数“Foo”不继承或实现约束类型“ListBase”
public class ItemBase {}
public class ListBase<T> where T : ItemBase
{
public virtual List<T> ListExample {get; set; }
}
这些是我的基类,尽管它们可能没有正确命名我只是试图展示一个简单的例子来说明我想要实现的目标。
public class FooItem : ItemBase { }
public class Foo : ListBase<FooItem>
{
public override List<FooItem> ListExample { get; set;}
}
所以我可以扩展列表的初始基类并用它做更多事情,但我想要一种处理所有这些类的通用方法。
public class ListHandler<T> where T : ListBase<ItemBase> { }
Foo
当我尝试传递我提到T
的ListHandler
错误时,我认为不可避免地因为Foo
is a List<ItemBase>
and FooItem
is 类型ItemBase
我将能够做到这一点var handler = new ListHandler<Foo>();
。
谁能解释为什么我不能这样做或我做错了什么?