我有两个接口,IDrawable和IUpdateable。一些具体的drawables是可更新的,但不是全部。例如,带有动画的精灵实现了IDrawable和IUpdateable,但静态图像只实现了IDrawable。
问题很明显......我怎么可能只用IDrawable引用来更新动画?如果我将一个Sprite传递给Button来使用它作为图形表示,那么Button就会保持静态,因为它无法推进它的精灵动画。
想法?
答案 0 :(得分:0)
解决方案是定义一个新的抽象:
public interface IXXXObject {
IDrawable Drawable { get; } // return null if not support IDrawable
IUpdatable Updatable { get; } // return null if not support IUpdatable
}
所有对象都应该实现此接口。 现在您应该将对象作为IXXXObject传递,如果它支持,您可以调用一个功能。