C 通過反射獲取型別的字段值及給字段賦值的操作

2021-10-20 18:34:37 字數 2226 閱讀 5667

舉例:

存在乙個類:

public class student

student stu1 = new student(

);

現在,我們想通過反射在運python基礎教程行時給stu1的name 和 age欄位 賦值,讓name = 「小明」,age = 15,怎麼做?

簡單的**如下:

...略

using system.reflection;

//反射類..

.略static void main(string[

] args)

需要注意的是:fieldinfo的setvalue方法有可能會導致異常,比如 fieldinfo2.setvalue(stu1,「15」),這句話給乙個int型字段賦了string型別的值,編譯是不會報錯的,在執行時會丟擲乙個system.argumentexception異常,請多加注意.

有了以上的了解,讓我們寫乙個簡單的動態字段c#教程賦值/取值類dynamic

具體**如下:

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.reflection;

namespace myunityhelper///

/// 泛型動態賦值

///<

/summary>///

"t">

<

/typeparam>///

"obj"

>

<

/param>///

"fieldname"

>

<

/param>///

"value"

>

<

/param>

public static void setvalue

(object obj, string fieldname, t value)///

/// 動態取值

///<

/summary>///

"obj"

>

<

/param>///

"fieldname"

>

<

/param>///

<

/returns>

public static object getvalue(

object obj, string fieldname)///

/// 動態取值泛型

///<

/summary>///

"t">

<

/typeparam>///

"obj"

>

<

/param>///

"fieldname"

>

<

/param>///

<

/returns>

public static t getvalue

(object obj,string fieldname)

}}

補充:c#利用反射方法實現物件的字段和屬性之間值傳遞

在物件導向開發過程中,往往會遇到兩個物件之間進行值傳遞的情況,如果物件中的屬性和字段較多,手動一一賦值效率實在太低。

這裡就整理了乙個通用的物件之間進行值傳遞的方法,並且考慮到物件中可能包含類屬性,因此還用到了遞迴以解決這個問題。

下面上**:

public static void convertobject(

object srcclass,

object desclass,

bool convertproperty = true,

bool convertfield = true,

bool showerror = true)

if(convertproperty)

else}}

}}}if

(convertfield)

else}}

}}}}

catch (exception ex)

, message=");

}else

, message=");

}}}

C 通過反射獲取列舉值列表

通過type.getfields bindingflags.static 獲取列舉值列表,然後通過fieldinfo.getvalue null 就能獲取到值,注意是傳入null,像獲取靜態值和常量那樣。返回的值可以直接強轉為int,因為列舉的基礎型別就是int。如果獲取所有的字段資訊,會發現裡面有...

c 如何通過反射 獲取 設定屬性值

c 利用反射,遍歷獲得乙個類的所有屬性名,以及該類的例項的所有屬性的值 命名空間 system.reflection 程式集 mscorlib 在 mscorlib.dll 中 c 利用反射,遍歷獲得乙個類的所有屬性名,以及該類的例項的所有屬性的值 總結 對應某個類的例項化的物件tc,遍歷獲取所有屬...

c 通過反射獲取類中的所有欄位和屬性

reflection中文翻譯為反射,是.net中獲取執行時型別資訊的方式。net的應用程式由幾個部分 程式集 assembly 模組 module 型別 class 組成。反射提供一種程式設計的方式,讓程式設計師可以在程式執行期獲得這幾個組成部分的相關資訊。assembly類可以獲得正在執行的裝配件...