遍歷乙個類/或類物件的屬性/值,很有用,看個例子
using執行結果:system;
using
system.collections.generic;
using
system.linq;
using
system.reflection;
using
system.text;
using
system.threading.tasks;
namespace
; //如果有name這個屬性
if(judgehasproperty("
name
",o))
//遍歷該ae物件的name/value (這是乙個系統類,這裡拿來測試一下)
foreachpropertyvalues(ae);
console.read();
} //////
判斷 物件 中是否有該屬性(不區分大小寫)
///
///屬性名稱
///目標物件
///public
static
bool judgehasproperty(string
propertyname,object o)
; }
propertyinfo p1 =o.gettype().getproperties();
bool b = false
;
foreach (propertyinfo pi in
p1)
} return
b;
} //////
獲取指定屬性的值(不區分大小寫)
///
///屬性名稱
///目標物件
///public
static object getpropertyvaluebyname(string
propertyname, object o)
; }
//建立乙個返回物件
object returnobject=new
object();
propertyinfo p1 =o.gettype().getproperties();
foreach (propertyinfo pi in
p1)
} return
returnobject;
} //////
遍歷屬性的名稱/值(顯示形式:name=value)
///
///public
static
void
foreachpropertyvalues( object o)
; }
propertyinfo p1 =o.gettype().getproperties();
foreach (propertyinfo pi in
p1)
} }
}
場景案例:比如想對htmlhelper寫乙個擴充套件的生成button標籤的方法:
public使用的時候,在檢視中,我們就可以這樣直接呼叫了:static mvchtmlstring mybutton(this
htmlhelper h, object htmlattribute)
; }
string str = ""
; propertyinfo p1 =htmlattribute.gettype().getproperties();
foreach (propertyinfo pi in
p1)
return
new mvchtmlstring( "
" + str + "
>
");
}
@html.mybutton(new )生成的html**:
'button
' id='
but' name='
butname
'class='
myclass
' value='
submit
' >
C 反射遍歷 查詢類中的屬性以及值
遍歷乙個類 或類物件的屬性 值,很有用,看個例子 using system using system.collections.generic using system.linq using system.reflection using system.text using system.thread...
類中的反射 查詢
類中的反射 查詢 類中的反射 查詢 getattr object,name,default none 獲取object裡面對應物件的記憶體位址 hasattr a,b 如果物件a中有變數b,返回true setattr x,y,z 設定乙個新方法 delattr x,y def bulk self ...
根據反射獲取物件屬性以及相應的值
以itemno構造類,進行舉例執行。getvalue獲取值,有兩個過載,一般使用的是兩個引數的,第二個引數是如果選中的model的屬性是列表索引化的話,可以放索引值,不是索引化屬性,則放null using system using system.collections.generic using ...