C 反射給物件賦值遇到的問題 型別轉換

2021-09-08 10:57:58 字數 1276 閱讀 8963

給乙個物件屬性賦值可以通過propertyinfo.setvalue()方式進行賦值,但要注意值的型別要與屬性保持一致。  

建立物件例項

1>

var obj = assembly.load("assemblyname").createinstance("assemblyname"+"classfullname");

2>

var obj = activator.createinstance(classtype);

賦值

var property = obj.gettype().getproperty("propertyname");//此時可以使用getproperty獲取屬性陣列,迴圈進行賦值,這裡主要講解型別問題。

1>該屬性型別是已知型別,例如:int

intvalue=500;

property.setvalue(obj,value,null);

2>該屬性型別是已知型別,原值是其他型別。例如:目標型別為int,值為string

stringvalue="500";

property.setvalue(obj,int.tryparse(value),null);//型別轉換。

3>該屬性型別是未知非泛型型別,不確定目標型別,如何進行型別轉換。

objectvalue="500";

property.setvalue(obj,convert.changetype(value,property.propertytype),null);//型別轉換。

程式設計師的基礎教程:

菜鳥程式設計師

反射給物件賦值遇到的問題 型別轉換

給乙個物件屬性賦值可以通過propertyinfo.setvalue 方式進行賦值,但要注意值的型別要與屬性保持一致。建立物件例項的兩種方法 1.1 var obj assembly.load assemblyname createinstance assemblyname classfullnam...

深入學習C 利用反射給物件賦值

c 中利用反射能夠獲取物件的屬性資訊,也可以利用反射給物件賦值。我們如果想利用凡是給乙個物件屬性賦值可以通過propertyinfo.setvalue 方式進行賦值,但要注意值的型別要與屬性保持一致。假設我們有如下乙個結構 struct person public string name 下面一段 ...

深入學習C 利用反射給物件賦值

c 中利用反射能夠獲取物件的屬性資訊,也可以利用反射給物件賦值。我們如果想利用凡是給乙個物件屬性賦值可以通過propertyinfo.setvalue 方式進行賦值,但要注意值的型別要與屬性保持一致。假設我們有如下乙個結構 struct person public string name 下面一段 ...