關於反射的簡單示例

2021-09-30 04:01:17 字數 1072 閱讀 3996

先寫乙個從字串生成任何型別的物件的函式

public object stringtoobject(string str,type objecttype)//傳遞兩個引數,乙個是字串含有每個屬性的屬性名和值對,屬性和值用冒號分隔,屬性與屬性用逗號分隔,另乙個引數是要建立的物件的型別

);//將字串分解成 「屬性:值」陣列

for (int i = 0; i < shuxing.length; i++)

//去掉字串的雙引號

object obj = system.activator.createinstance(objecttype); //使用反射動態建立物件

propertyinfo pis =obj .gettype().getproperties(bindingflags.public|bindingflags.instance);//獲得物件的所有public屬性

if (pis != null)//如果獲得了屬性

foreach (propertyinfo pi in pis)//針對每乙個屬性進行迴圈

)[0] == pi.name)//如果物件的屬性名稱恰好和字串中的屬性名相同

)[1],proertytype), null);

//將字串中的字串型別的「值」轉換為物件屬性的型別,並賦值給物件屬性

} }

} return obj;

} 然後呼叫這個函式

定義乙個學生類

class stu

set

} public int age

set

} }

pageload裡面可以使用下面方法建立stu物件了

由於使用了反射技術需要匯入名字空間 using system.reflection;

using using system.reflection;

。。。。。。。

string str = "/"name/":/"zhang/",/"age/":/"19/"";

stu aa = (stu)stringtoobject(str, typeof(stu));

定義簡單的反射工廠示例

首先,定義乙個水果抽象類,如下 class fruit 然後,例項化幾個水果類,如下 class banana fruit class orange fruit class public newvoid eating public override void eating 最後,建立水果工廠,如下 ...

定義簡單的反射工廠示例

首先,定義乙個水果抽象類,如下 class fruit 然後,例項化幾個水果類,如下 class banana fruit class orange fruit public override void eating 最後,建立水果工廠,如下 水果工廠 class fruitfactory else...

關於反射機制的一些示例

通過乙個物件獲得乙個完整的包名和類名 package com.ntqingniao.reflect public class client2 class demo2例項化class類物件 package com.ntqingniao.reflect public class client3 clas...