我一直在寻找,但没有找到解决方案。我在GAC中有一个程序集。我必须使用反射加载它。在那之后,我需要得到并向Enum发表讲话。但我可以得到MemberInfo[]
。我不明白如何将MemberInfo[]
转换为Enum
。
我有这样的代码:
//test assembly contains
public class MyClass
{
public enum MyEnum
{
MyVavue,
MyValue2
}
}
Assembly s = Assembly.Load("test");
Type type = s.GetTypes()[1];
MemberInfo[] memberInfos = type.GetMembers(
BindingFlags.Public |
BindingFlags.Static);
//I need to convert memberInfos to MyEnum
//and after that receive ---> MyEnum.MyValue <---
答案 0 :(得分:5)
您应该只使用Enum.GetValues
。这正是它的作用 - 使用反射来获取枚举字段:
Assembly s = Assembly.Load("test");
Type type = s.GetTypes()[1];
object[] values = Enum.GetValues(type);
object myValue = values.First(v => v.ToString() == "MyValue");
答案 1 :(得分:3)
使用GetFields
代替GetMembers
,然后拨打GetValue(null)
以获取枚举值。
答案 2 :(得分:1)
你可以使用
foreach(var member in memberinfos)
{
Enum.Parse(typeof(MyEnum),member.Name)
}
我还没有尝试..但或多或少的语法是相同的