C# 从ReflectType获取枚举

C# 从ReflectType获取枚举,c#,reflection,C#,Reflection,可能重复: 通过mytype.ReflectedType.GetFields,我可以获得c类中定义的常量 如何使用mytype.ReflectedType.XXX获取运行时在c类中定义的某个枚举?枚举实际上不是类的成员,它仅在类的范围内声明。可以使用GetNestedType方法获取在另一个方法中声明的类型。例如: public class Demo { public enum Values { Apha, Beta } } Type t = typeof(Demo).GetNested

可能重复:

通过mytype.ReflectedType.GetFields,我可以获得c类中定义的常量


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

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

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

Type t = typeof(Demo).GetNestedType("Values");
嗯,你可以试试

(int)((reflectedType.GetEnumValues()
                    .Zip(reflectedType.GetEnumNames(), (v, n) => new { v, n })
                    .Where(p => p.n == FieldName)
                    .Single()).v)
这将为您提供枚举常量的数值。
但是,您无法获取枚举值,因为这需要在编译时知道实际的枚举类型。

我在编译时不知道枚举。这不是复制品!这就是为什么它说可能重复;-FWIW如果你能枚举类的成员,那么这个答案和Marc Gravell的答案可能会有帮助:你的编辑也改变了很多问题:-你能告诉我们你是如何在运行时注入枚举的吗?我在编译时通过:typofclass.MyEnumDefinition将它传递给一个方法;Ptypeofmystuff.ReflectedType.GetNestedTypeValues对我有帮助。谢谢你,哈哈!