2011-10-12 77 views
1

我知道也许这个问题已被问过,但我似乎无法找到一个合适的解决方案(记住,我不是一个C#专家,但中级用户)...c#覆盖枚举

我准备了一个基类,包括一个枚举(动画状态),用于动画状态,我的屏幕对象可能有(例如,士兵可能有不同的状态,而鸟可能有另一组状态..)。基类正在服务为我的动画屏幕对象存储更新方法和其他东西的目的(像以同样的方式对所有这些对象进行动画处理)...基类中的枚举在内部是(自然)空的..我有使用枚举成员编写的方法...

如果我通过“public new enum ...”在我的子类中定义枚举,我可以“继承”它..对吧?此外,有趣的是,我有一个基础类字典,我试图从儿童(即士兵,或鸟),它的基地(动画物体)类传递它...但我不能...

我觉得我做错了什么或缺少任何想法?

+5

代码示例将有助于解释您正在尝试做什么。 –

+0

你不能覆盖C#中的枚举: http://stackoverflow.com/questions/4704201/what-is-the-best-way-to-override-enums – Tom

回答

2

您无法展开枚举。你可以在派生类中创建新的枚举,但它们是不同的。

我想你应该只使用int常量。

3

那么,你不能直接用C#中的枚举来完成它。

我会建议采取更多的面向对象的方法,并用真实对象替换枚举。通过这种方式,您可以在基类中定义一个接口IAnimationState,并添加一个抽象方法getAnimationState()。在屏幕对象类中,您只需实现此方法,返回接口IAnimationState的一些特定实现。这样,您可以将一些逻辑放入小型动画状态类中,从而使您的项目更加模块化。

0

枚举类型表示一组简单的值。而已。你试图使用枚举作为类的类型时,它根本不适合账单。

只需创建一个枚举(如果实际需要)并为复杂操作创建一个“真实”类型。

enum SomeEnum { Foo, Bar } 

class Whatever 
{ 
    public SomeEnum { get { return SomeEnum.Foo; } } 
} 

这个问题的developing a solution without really understanding the problem.而是提出解决方案,并要求我们找出过去的20%,它没有任何意义,告诉我们你实际上是试图完成一个很好的例子。这里有人可能有更好的方法,你甚至没有想到。