我有枚举:
public enum Colors { Yellow, Red }
然后我有一个字符串:
String enumName = "Colors";
是否可以从enumName获取枚举实例?类似的东西:
Enum colors = // get enum with name "Colors".
谢谢你, 米格尔
答案 0 :(得分:1)
using System;
using System.Linq;
namespace Stuff
{
class Program
{
static void Main(string[] args)
{
string enumName = "Colors";
string value = "Red";
var loadedPublicTypes = AppDomain.CurrentDomain.GetAssemblies().SelectMany(x => x.GetExportedTypes());
var possibleEnums = loadedPublicTypes.Where(x => x.IsEnum && x.Name == enumName);
foreach (var e in possibleEnums)
{
Console.WriteLine("{0} is{1} a member of {2}", value, Enum.GetNames(e).Contains(value) ? "" : " not", e.FullName);
}
}
}
public enum Colors
{
Red,
Yellow
}
}
答案 1 :(得分:0)
您可以使用动态类型并按名称查找变量,但您必须拥有要包含在搜索中的所有枚举的实例。
查看以下帖子:Getting variable by name in C#。
答案 2 :(得分:0)
您需要枚举类型的全名(例如System.Drawing.KnownColor, System.Drawing
或Microsoft.MediaCenter.UI.Colors, Microsoft.MediaCenter.UI
)。
完成此操作后,您可以使用反射创建相应枚举的实例。