關於反射的一些總結:
1) load,loadfrom和loadfile:
load:只載入本地程式集中指定的類(通過命名空間等方式指定)。
loadfrom:通過外部相對或者絕對路徑載入指定的類庫或者exe等檔案,且重複載入相同程式集僅第一次有效;如果該程式集引用其它程式集,會被自動載入。
loadfile:通過外部相對或者絕對路徑載入指定的類庫或者exe等檔案,重複載入相同程式集最後一次有效;如果該程式集引用其它程式集,不會被自動載入。
【可具體參考我的博文:
2)getexecutingassembly,getcallingassembly和getentryassembly(assembly靜態方法):
getexecutingassembly:獲取該方法所在方法的程式集自身。
getcallingassembly:獲取呼叫該方法所在方法的程式集。
getentryassembly:
【舉例】
假設有乙個類庫a,其中有乙個方法fun使用了getexecutingassembly,那麼它會呼叫fun所在方法的程式集。
如果a被b類庫使用,且b中的方法call呼叫了a的fun,且fun中使用了getcallingassembly,那麼它先獲取呼叫fun的方法(即call),然後獲取call所在的程式集。
【總結】一般前者是當前專案使用,後者往往是在發布成類庫之後動態供其它程式使用,獲取其它程式的assembly等資訊。
3)獲取整個assembly中所有的類情況:
3.1)先獲取乙個assembly例項(參考方法2)。
3.2)然後使用gettypes獲取全部的type。
4)獲取某個特定命名空間下的全部類:
無直接做法,建議使用方法3的結果對namespace屬性進行判斷(是否包含某個特定命名空間名等)
5)獲取當前assembly的路徑:
5.1)先獲取乙個assembly例項(參考方法2)。
5.2)然後location屬性。
備註:location將包含完整路徑和檔名(即便檔名做了修改也無妨)。
關於反射一些總結
1.建立實體 person如下類 view code public class person displayattribute description 年齡 public int age displayattribute description 返回方法 public string getval p...
關於Java反射的一些事
乙個類中,private的屬性或方法,如何對這些屬性進行讀寫操作或方法進行呼叫呢,答案就是反射。最近在寫單元測試用例時,發現通過反射來測試一些private的方法或設定private的屬性非常實用。先看定義乙個類,其中有乙個private的屬性和乙個private的方法,並且建構函式也是乙個priv...
關於反射機制的一些示例
通過乙個物件獲得乙個完整的包名和類名 package com.ntqingniao.reflect public class client2 class demo2例項化class類物件 package com.ntqingniao.reflect public class client3 clas...