1

在测试的时候,偶尔会有需要遍历某个对象,获取这个对象里的所有的方法和属性。
OK好吧,这种需求,会在做代理的时候用到的。比如被测对象不固定,或者前期更新会比较频繁。每次的更改,导致测试代码经常变更。
这个时候,如果可以获取对象的所有属性和所有方法,然后按照需求注入对应的数据,那么或许就方便了很多。
像一些测试工具(像SOAPUI,PushToTest等),你提供了某些方法或者地址,它可以将对应的参数,方法都给反射出来,然后你需要做的事情就是填入对应的值了。
通过参看C#的文档(由于工作需要,目前主要工作在.net平台),发现了System.Reflection里有提供的一些方式和方法
比如,下面的,获取对象的所有属性

static void Main(string[] args)
{
      var t = ServiceProxy.GetTcpService<IConfigurationService().GetConfig("ETMongoDBConnectionString");
foreach (System.Reflection.PropertyInfo p in t.GetType().GetProperties())
    {
      Console.WriteLine("Name:{0} Value:{1}",p.Name,p.GetValue(t));
     }

   Console.ReadLine();
 }

结果如下
请输入图片描述

遍历对象的方法,一样的的方式

    var ts = ServiceProxy.GetTcpService<IConfigurationService>();
    foreach (System.Reflection.MethodInfo m in ts.GetType().GetMethods())
    {
        Console.WriteLine(m.Name);
        var ms = m.GetParameters();
        foreach (var psinfo in ms)
        {
         Console.WriteLine(psinfo.Name + " "+psinfo.ParameterType.ToString());
        }
        Console.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    }

结果如下:
请输入图片描述


agentwx
354 声望23 粉丝