關於反射的一些總結:html
1) Load,LoadFrom和LoadFile:
Load:只加載本地程序集中指定的類(經過命名空間等方式指定)。
LoadFrom:經過外部相對或者絕對路徑加載指定的類庫或者Exe等文件,且重複加載相同程序集僅第一次有效;若是該程序集引用其它程序集,會被自動加載。
LoadFile:經過外部相對或者絕對路徑加載指定的類庫或者Exe等文件,重複加載相同程序集最後一次有效;若是該程序集引用其它程序集,不會被自動加載。
【可具體參考個人博文:http://www.cnblogs.com/ServiceboyNew/archive/2011/11/17/2241215.html】htm
2)GetExecutingAssembly,GetCallingAssembly和GetEntryAssembly(Assembly靜態方法):
GetExecutingAssembly:獲取該方法所在方法的程序集自身。
GetCallingAssembly:獲取調用該方法所在方法的程序集。
GetEntryAssembly:blog
【舉例】
假設有一個類庫A,其中有一個方法Fun使用了GetExecutingAssembly,那麼它會調用Fun所在方法的程序集。
若是A被B類庫使用,且B中的方法Call調用了A的Fun,且Fun中使用了GetCallingAssembly,那麼它先獲取調用Fun的方法(即Call),而後獲取Call所在的程序集。io
【總結】通常前者是當前項目使用,後者每每是在發佈成類庫以後動態供其它程序使用,獲取其它程序的Assembly等信息。命名空間
3)獲取整個Assembly中全部的類狀況:
3.1)先獲取一個Assembly實例(參考方法2)。
3.2)而後使用GetTypes獲取所有的Type。引用
4)獲取某個特定命名空間下的所有類:
無直接作法,建議使用方法3的結果對NameSpace屬性進行判斷(是否包含某個特定命名空間名等)反射
5)獲取當前Assembly的路徑:
5.1)先獲取一個Assembly實例(參考方法2)。
5.2)而後Location屬性。程序
備註:Location將包含完整路徑和文件名(即使文件名作了修改也無妨)。方法