我有枚举:
public enum Colors { Yellow, Red }
然后我有一个字符串:
String enumName = "Colors";
是否可以从 enumName 中获取 enum 实例?就像是:
Enum colors = // get enum with name "Colors".
谢谢你,米格尔
我有枚举:
public enum Colors { Yellow, Red }
然后我有一个字符串:
String enumName = "Colors";
是否可以从 enumName 中获取 enum 实例?就像是:
Enum colors = // get enum with name "Colors".
谢谢你,米格尔
你在找这样的东西吗?
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
}
}
您可以使用动态类型并按名称查找变量,但您必须拥有要包含在搜索中的所有枚举的实例。
查看以下帖子:在 C# 中按名称获取变量。
您需要枚举类型的全名(例如System.Drawing.KnownColor, System.Drawing
,或Microsoft.MediaCenter.UI.Colors, Microsoft.MediaCenter.UI
)。
一旦你有了这个,你就可以使用反射来创建相应枚举的实例。