Мне было интересно, существует ли более эффективный (эффективный, как в более простом / понятном коде) способ создания выражения case, как показано ниже ...
У меня есть словарь. Его тип ключа - Enum, а тип значения - bool. Если логическое значение истинно, я хочу изменить цвет метки на форме.
Для примера были изменены имена переменных.
Dictionary<String, CustomType> testDict = new Dictionary<String, CustomType>();
//populate testDict here...
Dictionary<MyEnum, bool> enumInfo = testDict[someString].GetEnumInfo();
//GetEnumInfo is a function that iterates through a Dictionary<String, CustomType>
//and returns a Dictionary<MyEnum, bool>
foreach (KeyValuePair<MyEnum, bool> kvp in enumInfo)
{
switch (kvp.Key)
{
case MyEnum.Enum1:
if (someDictionary[kvp.Key] == true)
{
Label1.ForeColor = Color.LimeGreen;
}
else
{
Label1.ForeColor = Color.Red;
}
break;
case MyEnum.Enum2:
if (someDictionary[kvp.Key] == true)
{
Label2.ForeColor = Color.LimeGreen;
}
else
{
Label2.ForeColor = Color.Red;
}
break;
}
}
До сих пор MyEnum имеет 8 различных значений .. это означает, что у меня есть 8 различных операторов case ..
Я знаю, что должен быть более простой способ сделать это, я просто не могу осмыслить это в моей голове.
Если бы кто-нибудь мог помочь, я был бы очень признателен. Я люблю C # и изучаю новые вещи каждый день .. Я впитываю это как губка :)
-CP