在.net中的反射,常用的有三個方法:
assembly.load()
assembly.load(「程式集」) //也就dll的命名空間
assembly.loadfrom()
assembly.loadfile()
動態載入ddl後開始操作,簡單的寫一下
public class class1 : iclass1
}
public inte***ce iclass1
assembly assembly = assembly.load("fstest");
iclass1 aa = (iclass1)assembly.createinstance("class1");
int res = aa.sum(11, 22);
//1、獲取指定路徑的程式集物件寫到這裡,歡迎交流!assembly assembly = assembly.loadfile(path.combine(environment.currentdirectory, "calculatortest.dll"));
//2、根據程式集物件和 型別名稱建立物件,並且可以傳遞構造引數,然後可以用 objany.gettype() 獲取 type
object jiafaobj = assembly.createobject("calculatortest.jiafaclass", 3, 4);
if (jiafaobj != null)
); new object );
#region 通過 屬性或字段方式 而不是 在建構函式中 傳值
2.2屬性方式賦值
//propertyinfo num1 = calculatortype.getproperty("number1");
//propertyinfo num2 = calculatortype.getproperty("number2");
//if (num1 != null && num2 != null)
//2.2欄位方式賦值
//fieldinfo num1 = calculatortype.getfield("number1");
//fieldinfo num2 = calculatortype.getfield("number1");
//if (num1 != null && num2 != null)
// #endregion
#endregion
//3、根據函式名稱建立方法元資料
methodinfo jisuanmethod = objtype.getmethod("jisuan");
if (jisuanmethod!=null)
); //沒引數用new object {}或 null 有引數用 new object 這樣
console.writeline(jisuanreturn.tostring());
}}接下裡是個人覺得比較好用的部分
optimizereflection 這個類庫提供了一些擴充套件方法,它們用於優化常見的反射場景
// 對於屬性的讀寫操作、方法的呼叫操作,還提供了效能更好的強型別(泛型)版本
//type instancetype = typeof(democlass);
//propertyinfo propertyinfo = instancetype.getproperty("id");
//fieldinfo fieldinfo = instancetype.getfield("name");
//methodinfo methodinfo = instancetype.getmethod("add");
1. 建立例項物件
//democlass obj = (democlass)activator.createinstance(instancetype);
2. 寫屬性
123);
123);
3. 讀屬性
//int a = (int)propertyinfo.getvalue(obj);
//int b = (int)propertyinfo.getvalue(obj);
4. 寫字段
"fish li");
5. 讀欄位
//string s = (string)fieldinfo.getvalue(obj);
6. 呼叫方法
//int c = (int)methodinfo.invoke(obj, new object );
//int d = (int)methodinfo.invoke(obj, new object );
C 反射實用技術
反射提供了封裝程式集 模組和型別的物件 type 型別 可以使用反射動態建立型別的例項,將型別繫結到現有物件,或從現有物件獲取型別並呼叫其方法或訪問其字段和屬性。如果 中使用了屬性,可以利用反射對它們進行訪問。程式集包含模組,而模組包含型別,型別又包含成員。反射則提供了封裝程式集 模組和型別的物件。...
C 反射實用技術筆記
反射提供了封裝程式集 模組和型別的物件 type 型別 可以使用反射動態建立型別的例項,將型別繫結到現有物件,或從現有物件獲取型別並呼叫其方法或訪問其字段和屬性。如果 中使用了屬性,可以利用反射對它們進行訪問。程式集包含模組,而模組包含型別,型別又包含成員。反射則提供了封裝程式集 模組和型別的物件。...
C 反射實用技術筆記
反射提供了封裝程式集 模組和型別的物件 type 型別 可以使用反射動態建立型別的例項,將型別繫結到現有物件,或從現有物件獲取型別並呼叫其方法或訪問其字段和屬性。如果 中使用了屬性,可以利用反射對它們進行訪問。程式集包含模組,而模組包含型別,型別又包含成員。反射則提供了封裝程式集 模組和型別的物件。...