標籤:each filename str create 它的 dao 方法參數 http 重要
在使用.NET建立的程式或組件時,中繼資料(metadata)和代碼(code)都儲存於“自成一體”的單元中,這個單元稱為裝配件。我們可以在程式運行期間訪問這些資訊。
在System.Reflection中有這樣一個class————Assembly,我們可以通過它來載入一個裝配件。方法如下:
Assembly assm=Assembly.LoadFrom(fileName);
其中filename是要載入的裝配件的檔案名稱(帶路徑)。
接下來,我們就可以通過使用System.Reflection內提供的Info classes來擷取裝配件中的資訊了。首先讓我們看一下這些Info classes:
MethodInfo 擷取某個“成員函數”的資訊,並提供對此“成員函數”中繼資料的訪問。
ParameterInfo 擷取某個“參數”的資訊,並提供對此“參數”中繼資料的訪問。
Constructorinfo 擷取某個“建構函式”的資訊,並提供對此“建構函式”中繼資料的訪問。
PropertyInfo 擷取某個“屬性”的資訊,並提供對此“屬性”中繼資料的訪問。
FieldInfo 擷取某個“資料成員”的資訊,並提供對此“資料成員”中繼資料的訪問。
EventInfo 擷取某個“事件”的資訊,並提供對此“事件”中繼資料的訪問。
上面列出的這些classes(除ParameterInfo外)的訪問操作,要通過一個Type對象來完成。比如我們要獲得一個裝配件的“成員函數”就要這樣做:
System.Reflection.Assembly ass=System.Reflection.Assembly.LoadFrom(fileName);
Type[] tp=ass.GetTypes();
System.Reflection.MethodInfo[] mi=tp[0].GetMethods();
使用同樣的方法我們還可以得到其它的資訊,如下:
獲得“建構函式”資訊:System.Reflection.ConstructorInfo[] ci=tp[0].GetConstructors();
獲得“屬性”資訊:System.Reflection.PropertyInfo[] pi=tp[0].GetProperties();
獲得“資料成員”資訊:System.Reflection.FieldInfo[] fi=tp[0].GetFields();
獲得“事件”資訊:System.Reflection.EventInfo[] ei=tp[0].GetEvents();
此外,我們可以通過ParameterInfo類來擷取“成員函數”和“建構函式”的參數資訊,如下:
擷取“成員函數”的參數資訊:System.Reflection.ParameterInfo[] pi=mi[0].GetParameters();
擷取“建構函式”的參數資訊:System.Reflection.ParameterInfo[] pi=ci[0].GetParameters();
ParameterInfo類有兩個重要的屬性:Name和ParameterType。通過它們我們可以得到“參數”的名稱和資料類型。
由於.NET將class的資訊以“中繼資料”的形式封裝在程式或是組件中,又提供了一系列可以擷取“中繼資料”的方法,所以我們可以程式運行期間來動態訪問這些資訊。
以下摘自百度:http://zhidao.baidu.com/question/294391411.html
個人膚淺理解,反射實際上就是得到程式集中的屬性和方法.
實現步驟:
1,匯入using System.Reflection;
2,Assembly.Load("程式集")載入程式集,傳回型別是一個Assembly
3, foreach (Type type in assembly.GetTypes())
{
string t = type.Name;
}
得到程式集中所有類的名稱
4,Type type = assembly.GetType("程式集.類名");擷取當前類的類型
5,Activator.CreateInstance(type); 建立此類型執行個體
6,MethodInfo mInfo = type.GetMethod("方法名");擷取當前方法
7,mInfo.Invoke(null,方法參數);
本貼原文:http://ziseliuxingzh.blog.163.com/blog/static/51120863200832832311528/
C# System.Reflection (反射)