已经挣扎了一段时间,这是我最接近的。我试图为游戏实现组件系统,其构思是组件实现接口,而任何游戏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参数,为什么可以接受? 对不起,我无法自己解决这个问题,但我很难过,而且我一直在网上四处看看。谢谢阅读。