Dot-Net
什麼是 System.Reflection.Module?
剛剛
Assembly.LoadModule()在智能感知中註意到。我看到它返回對基本上未記錄的Module類的引用。我非常了解反射,但我從未聽說過模組?這些是什麼?這個名字很誘人。
一個程序集可以由多個模組組成,甚至可以拆分為多個文件。
使用模組有兩個主要案例:
- 將用不同語言編寫/由不同編譯器編譯的模組組合在一個程序集中
- 通過擁有輕量級主模組並按需載入更多類型來優化應用程序的下載速度。
模組在一定程度上是 .NET 團隊認為使用者能夠通過網路將程序集下載到本地電腦以供執行的重要時期的產物。
為了節省頻寬,可以將程序集拆分為多個文件,每個文件都包含一個模組。包含主模組或主模組的程序集文件包含一個程序集清單,其中列出了所有其他程序集文件的位置。這允許開發人員確保快速初始下載主程序集,並且執行時根據需要從程序集中的其他模組載入類型或資源。
如果您好奇,您實際上可以指示 C# 編譯器吐出一個模組並使用程序集連結器手動編譯它們。這是MSDN 上的教程。
今天的大多數程序集都是僅包含一個主模組的單模組程序集。除非您以編寫處理反射(或原始 IL)的程式碼為生(我曾經做過一段時間),否則
assembly.MainModule只要您在需要時執行就可以了。我很確定使用 multil-file/multi-module 的人數是 ɛ(僅略大於 0)。