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...