程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 使用dynamic類型改進反射

使用dynamic類型改進反射

編輯:C#入門知識

首先還是聲明一下,使用場景:

1、如果編譯時函數名稱確定,對象類型運行時確定,那麼運用dynamic是一個好主意。
2、如果編譯時函數名稱確定,對象類型在編譯時也確定,那就既不需要反射也不需要dynamic。
3、如果函數名稱在運行時才能確定的話,那函數名稱就是一個字符串,必須使用反射來完成。

 

那麼我們肯定是是在第一種情況中使用dynamic類型改進反射:(編譯時函數名稱確定,對象類型運行時確定)

假設我們需要反射調用的函數是:

ClassLibrary
{
   Demo
  {
     GetName()
    {
       name = "dddd";
       name;
    }
  }
}

傳統的調用一般是:

Main([] args)
{
   typeinfo = .Load("ClassLibrary").GetType("ClassLibrary.Demo");
   instance = .Load("ClassLibrary").CreateInstance("ClassLibrary.Demo");
   me = typeinfo.GetMethod("GetName");
   ret = me.Invoke(instance, );
  .WriteLine(ret.ToString());

}

使用改良之後:

Program
{
   reflectObj = ;

   ([] args)
  {
    if (reflectObj == )
    {
      reflectObj = .Load("ClassLibrary").CreateInstance("ClassLibrary.Demo");
    }
     rrr = reflectObj.GetName();

    .WriteLine(rrr.ToString());

    .ReadKey();
  }
}

 

少了一步反射生產 函數 的步驟,也對我們後面進行的反射性能調優有著非常大的幫助:)

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved