从这个枚举类型:
public enum MySqlObjectType
{
Table = 1,
Procedure = 2,
View = 4,
Function = 8,
Trigger = 512,
User = 128,
Event = 256
}
我想做这样的事情:
Options.Load[MySqlObjectType.Event] = true;
Options.Load[MySqlObjectType.Function] = false;
选项类中的字段应如何显示,以便我可以执行上述操作?有可能吗?
答案 0 :(得分:2)
你只需要一个字典来存储枚举 - >布尔键/值对:
public class Options
{
public Options()
{
Load = new Dictionary<MySqlObjectType, bool>();
}
public Dictionary<MySqlObjectType, bool> Load { get; set; }
}
正如Ivan所说,你可能只想要一个简单的标志枚举:
public enum MySqlObjectType
{
Table = 1,
Procedure = 2,
View = 4,
Function = 8,
Trigger = 512,
User = 128,
Event = 256
}
请注意,所有值都应为2的幂且唯一。
MySqlObjectType value = MySqlObjectType.Event | MySqlObjectType.User;
要检查是否设置了值,您可以执行以下操作:
if ((value & MySqlobjectType.Event) == MySqlObjectType.Event) {
我认为您也可以在.NET Framework v4中执行此操作:
if (value.HasFlag(MySqlObjectType.Event)) {
答案 1 :(得分:1)
创建单个标志枚举的另一种方法是:
public enum MySqlObjectType
{
Table = 1 << 0,
Procedure = 1 << 1,
View = 1 << 2,
Function = 1 << 3,
Trigger = 1 << 9,
User = 1 << 7,
Event = 1 << 8
}
&#13;