我在一个 ASP.NET MVC 4 应用程序中工作,在应用程序启动时我正在寻找使用 BuildManager 来获取所有引用的程序集。我正在查看应用程序中的所有类型以找到我想要的一些(它是动态的所以在启动之前我不知道我需要什么类型)。
基本上我的代码如下所示:
var allTypes = BuildManager.GetReferencedAssemblies()
.Cast<Assembly>()
.SelectMany(a => a.GetTypes());
我在应用程序启动时调用它,但也在每个新请求开始时调用它以动态查找类型。
所以我的问题是:
- 由于 ASP.NET 在需要它们之前不会加载程序集,因此通过调用
BuildManager.GetReferencedAssemblies()
我是否在需要它们之前加载所有程序集并导致性能问题? - 对于每个请求,遍历所有类型是一个坏主意吗?我可以缓存这些类型,但是 ASP.NET 可以选择在我缓存它们之后动态加载程序集,对吧?如果是这样,我可能会错过一些确实存在的类型。
谢谢!