【发布时间】:2016-02-11 02:28:40
【问题描述】:
我的应用程序中有多个enum,它们枚举了多种不同的机器状态。在某些时候,一个命令和一个状态被传递给一个 IO 类,该类应该简单地接受命令和枚举值(作为一个 int)并将其写入 IO 端口。
我正在尝试设计一个函数声明,它采用 enum 值,尽管不是来自特定的 enum。我知道我可以让它取一个 int 值并使用它,但我希望函数的用户被强制传递和 enum 值。这可能吗?
public void WriteCommand(String command, int value) // Works technically
public void WriteCommand(String command, enum value) // Forces enum value to be passed
明确地说我有两个枚举
public enum MyEnum1 { VALUE1, VALUE2 };
public enum MyEnum2 { VALUE3, VALUE4 };
我希望能够像这样将每个枚举中的值传递给函数
WriteCommand("DoSomething", MyEnum1.VALUE1);
WriteCommand("DoSomething", MyEnum2.VALUE3);
收到后,我会将 enum 值转换为 int 以进行写入。
【问题讨论】:
-
为什么不根据命令制作多个接口呢?它们都可以调用采用
int的相同(私有或其他)基本方法。 -
为什么不坚持使用
int value而使用具有只读属性的静态类呢?例如,您可以将您的MyEnum1替换为具有属性Value1, Value2的相应静态类,并将您的整数分配给它。 -
看看他的,也许你在找什么stackoverflow.com/questions/10021249/…
-
所以 IO 类将实现多个接口(@987654335@、
ICommand2Writer等),其中每个接口对命令enum类型都有特定的函数签名?我想这会起作用,我只是想减少代码,而不是添加更多接口。不过谢谢你的建议!