C#使用通用数据覆盖抽象函数

问题描述 投票:0回答:1

我正在尝试覆盖一个抽象函数,但是在为列表指定类型时收到错误。该类型具有基本抽象类所请求的接口。

基本渲染器

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;
}
c# inheritance interface abstract
1个回答
0
投票

对于渲染器使用泛型,以便它仅适用于派生类怎么办?例如:

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) {}
}
© www.soinside.com 2019 - 2024. All rights reserved.