我有一个适用于我框架中所有管理器的通用类。 (例如实体、游戏警报、物理和粒子的管理器)。
基本上他们都做同样的事情。他们有一些东西,他们需要更新这些东西,他们需要渲染这些东西(好吧,不是所有的经理都需要渲染......但无论如何)。所以我有一个通用基类可以做到这一点。我定义它存储的“东西”。
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/