c# - 继承通用类的对象列表

标签 c# list generics

我有一个适用于我框架中所有管理器的通用类。 (例如实体、游戏警报、物理和粒子的管理器)。

基本上他们都做同样的事情。他们有一些东西,他们需要更新这些东西,他们需要渲染这些东西(好吧,不是所有的经理都需要渲染......但无论如何)。所以我有一个通用基类可以做到这一点。我定义它存储的“东西”。

public class GenericManager<T> where T : Updatable

我游戏中的对象(如实体/粒子/等)继承了 Updatable,我们走了。

public class EntityManager : GenericManager<Entity>

当然,实体是

public class Entity: Updatable

现在我想知道如何将所有这些经理放入一个经理列表中。我需要一种方法来存储它们,迭代它们,并在另一个管理器中更新它们(我想)。

PS 这可能不是处理我正在做的事情的理想方式,但这实际上只是一个学习练习,让我更熟悉使用泛型。

最佳答案

您可以只使用一个简单的空管理器界面来创建基于 OfType 的列表和交叉点扩展方法,像这样

public interface IGenericManager { }

public class GenericManager<T> : IGenericManager where T : Updateable { }

public class EntityManager : GenericManager<Entity> { }

var list = new List<IGenericManager>();
var entityManagers = list.OfType<EntityManager>();

关于c# - 继承通用类的对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7967303/

相关文章:

c# - datetime.now 仅在服务器上延迟 10 小时,在本地机器上设置正确

c++ - 如何在没有随机性的情况下对列表进行洗牌,并保证一部分元素最终会出现在一侧?

python - "Balancing"符号列表

java - 了解具有 void 返回类型的泛型参数

c# - .NET 可执行文件在被新版本覆盖后不起作用

c# - 从脚本中删除组件

html - 如何在html中创建这样的动态列表

C# - 当传入带参数的函数时,通用类型函数尝试将结果分配给 System.Func(指定类型)

java - 如何在运行时获取对象类型?

c# - Angular 5 Uncaught( promise 中): Error: StaticInjectorError(AppModule)