C 反射 和 設定資料

2021-08-28 16:03:27 字數 2158 閱讀 7786

obj -> property

obj.gettype().getproperty

property->obj

info.setvalue(obj)

info.getgetmethod().invoke(obj, null);

先拿屬性 然後調取他的get{} 方法

//對某個類進行例項化

object obj = activator.createinstance(msg_type);

typeof(classa) == a.gettype()

type type = a.gettype()

isgenerictype

泛型來說typeof(list) dictionary等

可以使用type.isgenerictype 來判斷是否是泛型型別

convert.changetype

轉換型別

setvalue

設定資料

propertyinfo.setvalue(parent, convert.changetype(inputvalue, propertyinfo.propertytype), new object );

設定list裡面的某個資料,propertyinfo為 item的property

設定的時候parent是獲取property的obj

type.getgenerictypedefinition() == typeof(list<>)

var item_type = type.getgenericarguments()[0];

type.getgenerictypedefinition() == typeof(dictionary<,>)

var generic_args_type = type.getgenericarguments();

var key_type = generic_args_type[0];

var value_type = generic_args_type[1];

type.isvaluetype

是不是int 等value

isclass

是否是類

type == typeof(byte)

是否是byte

if (displayfoldout(obj, string.format(" - ", prefix, type.name)))

}editorgui.indentlevel--;

}

protected void displayobject(object obj, type type, string prefix, object parent, system.reflection.propertyinfo propertyinfo));}

else

}editorguilayout.endhorizontal();

}else if (type.isgenerictype)

- list<>", prefix, item_type.name)))

editorguilayout.endhorizontal();

for (var i = 0; i < list.count; ++i)

editorgui.indentlevel--;}}

else if (type.getgenerictypedefinition() == typeof(dictionary<,>))

- dictionary<, >", prefix, key_type.name, value_type.name)))

editorgui.indentlevel--;}}

else

", type.tostring()));}}

else if (type.isvaluetype));}

else

}editorguilayout.endhorizontal();

}else if (type == typeof(byte))

else if (type.isclass)

- ", prefix, type.name)))

}editorgui.indentlevel--;}}

else

", type.tostring()));

}}

反射簡介 C 特性和反射

net編譯器的任務之一就是為所有定義和引用的型別生成元資料描述。除了程式集中標準的元資料外,net平台還支援特定 attribute 把更多的元資料嵌入到程式集中。net特性擴充套件了抽象的system.attribute基類,net中有很多預定義的特性,例如 dllimport obsolete ...

C 反射設定屬性值和獲取屬性值

獲取類中的屬性值 public string getmodelvalue string fieldname,object obj catch 設定類中的屬性值 public bool setmodelvalue string fieldname,string value,object obj cat...

C 反射設定屬性值和獲取屬性值

獲取類中的屬性值 public string getmodelvalue string fieldname,object obj catch 設定類中的屬性值 public bool setmodelvalue string fieldname,string value,object obj cat...