我正在尝试覆盖一个抽象函数,但是在为列表指定类型时收到错误。该类型具有基本抽象类所请求的接口。
基本渲染器
public abstract class Renderer
{
abstract void Render(Dictionary<GenericVAO, List<IEntity>> data);
}
Sprite Renderer
public class SpriteRenderer : Renderer
{
public override void Render(Dictionary<GenericVAO, List<Sprite>> data) {}
}
雪碧
public class Sprite : IEntity
{
public SpriteVAO model;
}
对于渲染器使用泛型,以便它仅适用于派生类怎么办?例如:
public abstract class Renderer<T> where T : IEntity
{
abstract void Render(Dictionary<GenericVAO, List<T>> data);
}
不确定GenericVAO是否也应为T型VAO。不知道您在做什么。
然后将Sprite渲染器替代为:
public class SpriteRenderer : Renderer<Sprite>
{
public override void Render(Dictionary<GenericVAO, List<Sprite>> data) {}
}