C#遍歷對象裏的屬性和方法

在測試的時候,偶爾會有須要遍歷某個對象,獲取這個對象裏的全部的方法和屬性。
OK好吧,這種需求,會在作代理的時候用到的。好比被測對象不固定,或者前期更新會比較頻繁。每次的更改,致使測試代碼常常變動。
這個時候,若是能夠獲取對象的全部屬性和全部方法,而後按照需求注入對應的數據,那麼或許就方便了不少。
像一些測試工具(像SOAPUI,PushToTest等),你提供了某些方法或者地址,它能夠將對應的參數,方法都給反射出來,而後你須要作的事情就是填入對應的值了。
經過參看C#的文檔(因爲工做須要,目前主要工做在.net平臺),發現了System.Reflection裏有提供的一些方式和方法
好比,下面的,獲取對象的全部屬性segmentfault

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("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    }

結果以下:
請輸入圖片描述spa

相關文章
相關標籤/搜索