主程式:
/**
*/public
class
testreflectset
public
void
setreadonly( string readonly )
}
方法1:
testreflectset t = new testreflectset();
field f = t.getclass().getdeclaredfield("readonly");
f.setaccessible(true);
f.set(t, "test");
system.out
.println(t.getreadonly());
以上方法得到乙個類的field 屬性,然後設定可見性,然後設定了乙個值,最後列印
方法2:
method setreadonly = t.getclass().getmethod("setreadonly", string.class);
string s ="test2"
; setreadonly.invoke(t,s);
system.out
.println(t.getreadonly());
最後的列印結果:
呼叫方法一
test
呼叫方法二
settest2
也就是說,第一種方法,沒有呼叫屬性的set方法就完成了賦值,但是第二種方法,是通過呼叫屬性的set方法來完成賦值。
深入學習C 利用反射給物件賦值
c 中利用反射能夠獲取物件的屬性資訊,也可以利用反射給物件賦值。我們如果想利用凡是給乙個物件屬性賦值可以通過propertyinfo.setvalue 方式進行賦值,但要注意值的型別要與屬性保持一致。假設我們有如下乙個結構 struct person public string name 下面一段 ...
深入學習C 利用反射給物件賦值
c 中利用反射能夠獲取物件的屬性資訊,也可以利用反射給物件賦值。我們如果想利用凡是給乙個物件屬性賦值可以通過propertyinfo.setvalue 方式進行賦值,但要注意值的型別要與屬性保持一致。假設我們有如下乙個結構 struct person public string name 下面一段 ...
反射給物件賦值遇到的問題 型別轉換
給乙個物件屬性賦值可以通過propertyinfo.setvalue 方式進行賦值,但要注意值的型別要與屬性保持一致。建立物件例項的兩種方法 1.1 var obj assembly.load assemblyname createinstance assemblyname classfullnam...