传递类型参数以获取实现该类型的对象列表

时间:2016-12-14 02:44:21

标签: c# types casting xna monogame

已经挣扎了一段时间,这是我最接近的。我试图为游戏实现组件系统,其构思是组件实现接口,而任何游戏actor(主要只是组件的容器)都将实现相同的接口并传递与某个相关的方法调用。实现该接口的所有组件的接口。这是我写的:

/// <summary>
/// Returns a list of all objects implementing an interface 
/// </summary>
public List<IComponent> Implementing(Type t)
{
    List<IComponent> imps = new List<IComponent>();

    foreach (IComponent comp in Ancillary)
        if (comp.GetType() == t)
            imps.Add(comp);

    return imps;
}

/// <summary>
/// Draw all objects implementing IDrawDepth
/// </summary>
public void Draw(SpriteBatch batch, Vector2 spin)
{
    foreach (IDrawDepth drawable in Implementing(IDrawDepth))
    {
        drawable.Draw(batch, spin);
    }
}

引发错误

'IDrawDepth' is a type, which is not valid in the given context

如果我无法实际传递一个Type参数,为什么可以接受? 对不起,我无法自己解决这个问题,但我很难过,而且我一直在网上四处看看。谢谢阅读。

0 个答案:

没有答案