我想控制一个带有C#程序的其他设备,这个设备有类似读写寄存器的东西。所以我搜索一些东西输入所有寄存器号以获得更好的人类可读代码并具有中央配置位置。所有寄存器都使用uint值。
我搜索的是这样的:
public enum EISCJoin : uint
{
Read_Connect = 1,
Read_Temp = 2,
Read_Switch = 3,
Write_Connect = 1,
Write_Temp = 2,
Write_Switch = 3,
}
switch (args.Sig.Number) //uint value
{
case (uint)EISC.Read_Connect:
{
args.SendValue[(uint)Write_Connect] = 1;
...
break;
}
case (uint)EISC.Read_Temp:
{
args.SendValue[(uint)Write_Temp] = 1;
...
break;
}
case (uint)EISC.Read_Switch:
{
args.SendValue[(uint)Write_Switch] = 1;
...
break;
}
}
我的问题是我不想在我的源代码中输入ENUM值数千次,而我所知道的是枚举无法进行隐式对话。
有人建议创建一个常量的uint值列表吗?
安德烈亚斯
答案 0 :(得分:3)
你需要转换数字:
switch (args.Sig.Number)
到
switch ((EISCJoin)args.Sig.Number)
另一种方法是使用静态类和常量uints:
static public class EISCJoin
{
public const uint Read_Connect = 1;
public const uint Read_Temp = 2;
// and so on
}
答案 1 :(得分:0)
我必须使用制造商的框架并且无法访问所有类,不能将所有类修改为枚举。
我使用一个值的时间最多只有1-2次,所以我把这个值的最多时间用于1次。
看起来我必须使用带有const uint变量的静态类。
感谢您的帮助