我的应用程序中有多个enum,它枚举多个不同的机器状态。在某个时候,命令和状态被传递给IO类,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,以便写入。
发布于 2016-02-10 18:23:32
只需将代码从
public void WriteCommand(String command, enum value) // Forces enum value to be passed至
public void WriteCommand(String command, Enum value) // Forces enum value to be passed你会很高兴的
System.Enum表示所有创建的枚举的基类。因此,您将能够传递任何创建的枚举,但没有其他。
您还应该注意到以下几点:
如果没有显式声明基础类型,则使用Int32。
因此,在基类不是Int32的情况下,可能会捕获一个枚举。在这种情况下,在将值写入设备之前,您应该注意如何解释和转换该值。
发布于 2016-02-10 18:19:24
只需设置参数Enum即可。
发布于 2016-02-10 18:18:12
如果你想严格对待它:
public void WriteCommand(String command, Enum value)
{
Console.WriteLine(value.ToString());
}或者更通用的,它接受int和其他值类型。
public void WriteCommand<T>(String command, T value) where T : struct
{
Console.WriteLine(value.ToString());
}https://stackoverflow.com/questions/35322811
复制相似问题