在测试的时候,偶尔会有需要遍历某个对象,获取这个对象里的所有的方法和属性。
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("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
}
结果如下:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。