C 反射機制和作用例項講解

2022-09-22 07:00:11 字數 617 閱讀 1251

第一件事就是:反射很慢,消耗效能。

反射:可以通過程式集,型別,型別例項獲取該程式集內【所有型別+型別所有欄位+型別欄位的型別,方法,方法的訪問型別,引數和返回值等等。。。】

作用<1> json或xml解析,用於例項化乙個class類,當然需要該class類和jsondata或xml data的內容相匹配。

評價:很雞肋的用法——如果你很懶,不想寫反射機制的相關**,完全可以用jsonmapper等工具實現,其內部也是用反射實現的。而且初始化物件可以用二進位制序列化檔案,比xml和json高效,可壓縮,可加密(protocolbuf或序列化器)

作用<2>應用於工廠 :把要建立的型別的當做引數去建立相應的物件

評價:好的物件導向設計可以避免反射,比如面向抽象程式設計,面向介面程式設計

優點:此處反射唯一的好處是可以把建立的類寫到json,通過assetbunddle download json,可以在遊戲發布後還可以控制控制建立物體的型別。

作用<3> 對於第三方外掛程式。比如c++寫的dll,匯入dll後你怎麼知道裡面包含了哪些類,類的命名空間,哪些字段,欄位的型別,哪些方法,方法的引數和返回值?特別是你通過「dll檢視器」,看到乙個函式很可能就是你想要的,但是你不知道其引數型別和返回值型別,怎麼辦?答案就是反射。

C 反射例項講解

1 建立用於反射使用的dll 新建乙個c 類庫專案,拷貝源 如下,編譯生成dll 假如dll的檔名是testreflect.dll 1using system 23namespace webtest412 13 public string writestring string s 14 1718 1...

C 反射例項講解

1 建立用於反射使用的dll 新建乙個c 類庫專案,拷貝源 如下,編譯生成dll 假如dll的檔名是testreflect.dll using system namespace webtest public string writestring string s dsajkjflasjdfalksd...

C 反射例項講解

1 建立用於反射使用的dll 新建乙個c 類庫專案,拷貝源 如下,編譯生成dll 假如dll的檔名是testreflect.dll 1using system 23namespace webtest412 13 public string writestring string s 14 1718 1...