C 反射遍歷 查詢類中的屬性以及值

2021-09-07 15:02:40 字數 2322 閱讀 3119

遍歷乙個類/或類物件的屬性/值,很有用,看個例子

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