前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅谈.Net反射 8

浅谈.Net反射 8

作者头像
小蜜蜂
发布2019-07-30 10:38:30
3690
发布2019-07-30 10:38:30
举报
文章被收录于专栏:明丰随笔

方法信息与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类型

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 明丰随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档