c 反射 序列化 動態程式設計

2021-10-01 04:14:26 字數 2988 閱讀 2339

//反射

class

apublic

void

mytest

(int a)

public

voida1(

)public

voida2(

)}

var input =  console.

readline()

;/** 使用反射的機制,拿到例項a的源資料

*/var type =

typeof

(a);

var a =

newa()

;var prop = type.

getproperty

("mylast");

prop.

setvalue

(a,"aaa"

,null);

//獲取方法

//input使用輸入的方式選擇那個方法

var method = type.

getmethod

(input)

; method.

invoke

(a,null);

console.

writeline

(a.mylast)

;

使用程式集反射

inte***ce

imethods

classa:

imethods

public

void

mytest

(int a)

public

voida1(

)public

voida2(

)}

classb:

imethods

public

void

mytest

(int a)

public

voida1(

)public

voida2(

)}

static

void

main

(string

args)

required特性[必須存在]

//實現attribute

//只能修飾屬性

[attributeusage

(attributetargets.property)

]class

myrequired

:system.attribute}}

return

true;}

}

var a =

newa()

;if(myrequired.

myrequiredisnull

(a))

else

[

serializable

]class

apublic

void

mytest

(int a)

}

var a =

newa()

;//.bin 序列化檔案字尾

using

(var stram = file.

open

(typeof

(a).name +

".bin"

, filemode.create)

)//反序列化

using

(var starm = file.

open

(typeof

(a).name +

".bin"

, filemode.open)

)console.

writeline

(a.mylast)

;

public

class

dynamicxml

:dynamicobject

, ienumerable

;}protected

dynamicxml

(xelement element);}

protected

dynamicxml

(ienumerable elements)

public

override

bool

trygetmember

(getmemberbinder binder,

outobject result)

}return

true;}

public

override

bool

trygetindex

(getindexbinder binder,

object

indexes,

outobject result)

public

ienumerator

getenumerator()

}

string xml =

@" 123

";dynamic aa =

newdynamicxml

(xml)

; console.

writeline

(aa.book[0]

.title.value)

;//兩種方式選擇一種即可

foreach

(dynamic b in aa.book)

", b.title.value);}

console.

readline()

;

C 序列化 反序列化

序列化又稱序列化,是.net執行時環境用來支援使用者定義型別的流化的機制。其目的是以某種儲存形成使自定義物件持久化,或者將這種物件從乙個地方傳輸到另乙個地方。net框架提供了兩種序列化的方式 1 是使用binaryformatter進行序列化 2 使用soapformatter進行序列化 3 使用x...

C 程式設計之JSON序列化與反序列化

模型類1 json字串模型.是否出錯 public class errormodel endregion region 建構函式 禁止使用空建構函式 private errormodel 建構函式 錯誤標識,0表示沒有錯誤,1表示有錯誤 public errormodel int error end...

序列化和反序列化 C 序列化與反序列化。

序列化介紹 把物件用一種新的格式來表示。系列化只序列化資料。序列化不建議使用自動屬性 為什麼要序列化 將乙個複雜的物件轉換流,方便儲存與資訊交換。class program class person public int age 二進位制序列化 就是將物件變成流的過程,把物件變成byte class...