方法信息与MethodInfo类型
System.Reflection.MethodInfo类封装了类型的方法信息,它继承自MemberInfo。
定义MethodExplore()方法:
代码语言:javascript复制public static void MethodExplore(Type t)
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("Explore type " t.Name " methods:");
sb.AppendLine(String.Empty.PadLeft(50, '-'));
MethodInfo[] methods = t.GetMethods();
foreach (MethodInfo method in methods)
{
sb.AppendLine("name:" method.Name);
sb.AppendLine("method:" method.ToString());
sb.AppendLine("attributes:" method.Attributes);
sb.AppendLine("return type:" method.ReturnType);
ParameterInfo[] parameterInfos = method.GetParameters();
foreach (var param in parameterInfos)
{
sb.AppendLine("--parameter name: " param.Name);
sb.AppendLine("--parameter type: " param.ParameterType);
sb.AppendLine("--parameter Position: " param.Position);
sb.AppendLine("--parameter IsOptional: " param.IsOptional);
sb.AppendLine("--parameter HasDefaultValue: " param.HasDefaultValue);
}
}
Console.WriteLine(sb.ToString());
}
MethodInfo类也有一个Attributes属性,它返回一个MethodAttributes位标记,MethodAttributes标明了方法的一些特性,常见的有Abstract、Static、Virtual、Public、Private等。
与前面不同的是,MethodInfo可以具有参数和返回值,MethodInfo类提供了GetParameters()方法获取参数对象的数组,方法的参数都封装在了ParameterInfo类型中。
运行下面的代码:
代码语言:javascript复制Type t = typeof(DemoClass);
MethodExplore(t);
运行结果:
ConstructorInfo类型和EventInfo类型
这两个类型封装了类型的构造函数和事件信息,查看这些类型与之前的方法类似,通过调用Type对象中的下面两方法就可以返回:
代码语言:javascript复制public ConstructorInfo[] GetConstructors();
public virtual EventInfo[] GetEvents();
本文回顾:
方法信息与MethodInfo类型
ConstructorInfo类型和EventInfo类型