正在将成员信息[]转换为枚举
本文关键字:转换 枚举 员信息 成员 | 更新日期: 2023-09-27 18:35:20
我一直在寻找一段时间,但没有找到解决方案。我在 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 <---
使用 GetFields
而不是 GetMembers
然后调用 GetValue(null)
以获取枚举值。
你应该简单地使用 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");
你可以使用
foreach(var member in memberinfos)
{
Enum.Parse(typeof(MyEnum),member.Name)
}
我还没有尝试过..但语法或多或少是相同的