AppDomain.CurrentDomain.GetAssemblies()
這個方法獲取的是當前應用程序域已經加載的程序集,未加載的是獲取不到的(盡管引用了該項目),所以在配置依賴注入時,可能會出現有些程序集拿不到的情況,導致沒有注入所有需要的服務。
Assembly.GetEntryAssembly().GetReferencedAssemblies().Select(Assembly.Load)
獲取該應用所有引用的程序集
DependencyContext.Default.CompileLibraries
獲取CLR中的所有庫(我也是一知半解)
總結
若要通過反射進行依賴注入的話,該應用必須要引用所有要注冊的服務,然后使用第2、3中方式獲取程序集。第一種方式最好別用,因為程序啟動時並不會加載所有程序集。
記錄一下。后面知識增長了會完善
