是否有可能在不知道類型的情況下迭代枚舉?迭代通過使用字符串名稱初始化的枚舉類型?
說我傳入一個字符串名稱,表示枚舉的類型爲一個方法。
然後,我會以某種方式需要從該字符串名稱中獲取枚舉類型,並遍歷集合以提取枚舉中包含的名稱/值。
是否有可能在不知道類型的情況下迭代枚舉?迭代通過使用字符串名稱初始化的枚舉類型?
說我傳入一個字符串名稱,表示枚舉的類型爲一個方法。
然後,我會以某種方式需要從該字符串名稱中獲取枚舉類型,並遍歷集合以提取枚舉中包含的名稱/值。
您可以使用反射來做到這一點
List<KeyValuePair<string, object>> GetEnumInfo(string name)
{
var type = Type.GetType(name);
return Enum.GetValues(type)
.Cast<object>()
.Select(v => new KeyValuePair<string, object>(Enum.GetName(type, v), v))
.ToList();
}
是的,你可以訪問一個枚舉的名稱和值,如果你知道的類型。例如看到下面的代碼片段:
string enumTypeName = "qualified enum type name";
var enumType = Type.GetType(enumTypeName);
var values = Enum.GetValues(enumType);
var names = Enum.GetNames(enumType);
現在你可以很容易地遍歷values
和names
Enum.GetValues(Type.GetType(yourEnumName, true, true));