Rya*_*ins 7 c# windows reflection enums
我试图使用反射列出一个Visual Studio解决方案中的各种项目中的几个类的公共成员和方法.我试图访问的所有类都是C#,它们都是从C#类访问的.我用来进行这些调用的代码如下:
public void PopulateEventParamTree()
{
System.Console.WriteLine(source.GetType().ToString());
Type type = (Type)source.getEventType();
System.Console.WriteLine(type.ToString());
foreach (MemberInfo member in type.GetMembers())
{
System.Console.WriteLine("\t" + member.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
大多数输出工作正常(即Int32,Double,System.String).我的问题是,当我尝试列出枚举时,我得到一个输出到控制台,如下所示:
Namespace.Subspace.event+EVENT_TYPE
Run Code Online (Sandbox Code Playgroud)
我希望能够看到枚举的所有内在值而不仅仅是它的名称.例如,枚举
public enum EVENT_TYPE
{
EVENTDOWN,
EVENTMOVE,
EVENTUP,
}
Run Code Online (Sandbox Code Playgroud)
应该输出这样的东西
Namespace.Subspace.class+EVENT_TYPE EVENTDOWN
Namespace.Subspace.class+EVENT_TYPE EVENTMOVE
Namespace.Subspace.class+EVENT_TYPE EVENTUP
Run Code Online (Sandbox Code Playgroud)
任何人都可以提供的任何帮助将不胜感激.我已经筋疲力尽了迄今为止我能找到的一切,但是新的视角会很好.
谢谢
小智 8
如何通过反射获取枚举和值
var importAssembly = System.Reflection.Assembly.LoadFile("test.dll");
Type[] types = importAssembly.GetTypes();
foreach (Type type in types)
{
if (type.IsEnum)
{
var enumName=type.Name;
foreach (var fieldInfo in type.GetFields())
{
if (fieldInfo.FieldType.IsEnum)
{
var fName=fieldInfo.Name;
var fValue=fieldInfo.GetRawConstantValue()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)