Использование перечисления в этом случае - попытка поместить квадратный колышек в круглое отверстие.Принимая во внимание, что XML является излишним для того, что вы пытаетесь сделать.
Вместо этого используйте словарь.Таким образом, существует прямая связь «ключ => значение», и значение может быть любым.
Для строкового отношения 1-1 используйте следующее:
Dictionary<string, string> dictA = new Dictionary<string, string>();
dictA.Add("string1", "value1");
dictA.Add("string2", "value2");
dictA.Add("string3", "value3");
Чтобы получить доступ ко всем значениям словаря, используйте это:
foreach (KeyValuePair<string, string> item in dictA)
{
Console.WriteLine("Key: {0}; Value: {1};", item.Key, item.Value);
}
Если вам нужно строковое отношение 1-2 1-3 или 1-n, используйте это:
Dictionary<string, List<string>> dictB = new Dictionary<string, List<string>>();
dictB.Add("string1", new List<string>() {"value1A", "value1B"});
dictB.Add("string2", new List<string>() {"value2A", "value2B"});
dictB.Add("string3", new List<string>() {"value3A", "value3B"});
Чтобы получить доступ ко всем значениям словаря, используйте это:
foreach (KeyValuePair<string, List<string>> item in dictB)
{
Console.WriteLine("Key: {0}; Values: {1}, {2};", item.Key, item.Value[0], item.Value[1]);
}
Если вам нужно отношение массива в шахматном порядке, используйте это:
Dictionary<string, List<string>> dictB = new Dictionary<string, List<string>>();
dictB.Add("string1", new List<string>() {"value1A", "value1B, value1C"});
dictB.Add("string2", new List<string>() {"value2A", "value2B, value2C, value2D"});
dictB.Add("string3", new List<string>() {"value3A", "value3B"});
Чтобы получить доступ ко всем значениям словаря, используйте это:
foreach (KeyValuePair<string, List<string>> item in dictB)
{
string values = "";
int valLen = ((List<string>)item.Value).Count;
for (int i = 0; i < valLen; i++)
{
if (i == (valLen - 1))
{
values += item.Value[i] + "";
}
else
{
values += item.Value[i] + ", ";
}
}
Console.WriteLine("Key: {0}; Values: {1};", item.Key, values);
}
Чтобы получить значение для определенного ключа, сделайте что-то вроде этого:
string match = "string2";
if (dictD.ContainsKey(match))
{
Console.WriteLine("The value for Key='{0}' is: '{1}'", match, dictD[match]);
}
Enums isничего, кроме прославленного словаря.Вот почему вы не увидите их на многих других языках (особенно на языках с динамической типизацией).