从ReflectedType获取枚举

时间:2012-09-10 11:02:34

标签: c# reflection

  

可能重复:
  Getting Enum value via reflection

使用mytype.ReflectedType.GetFields()我可以获得在c#类中定义的常量。

如何使用mytype.ReflectedType.XXX运行时期间在c#类中定义的某个枚举?

2 个答案:

答案 0 :(得分:0)

枚举实际上并不是该类的成员,它只在类的范围内声明。您可以使用GetNestedType方法获取在另一个内部声明的类型。例如:

public class Demo {
  public enum Values { Apha, Beta }
}

Type t = typeof(Demo).GetNestedType("Values");

答案 1 :(得分:0)

好吧,你可以试试

(int)((reflectedType.GetEnumValues()
                    .Zip(reflectedType.GetEnumNames(), (v, n) => new { v, n })
                    .Where(p => p.n == FieldName)
                    .Single()).v)

这将为您提供枚举常量的数值。 但是,您无法获取枚举值,因为这需要在编译时知道真实的枚举类型。