我正在一个ASP.NET MVC 4应用程序中工作,在应用程序启动时,我正在寻找使用BuildManager获取所有引用的程序集,我正在查看应用程序中的所有类型,以找到我想要的一些类型(它是动态的,所以在启动之前我不知道需要哪种类型)。
本质上,我的代码如下所示:
var allTypes = BuildManager.GetReferencedAssemblies()
.Cast<Assembly>()
.SelectMany(a => a.GetTypes());我在应用程序启动时调用它,但在每个新请求开始时也调用它,以便动态查找类型。
所以我的问题是:
BuildManager.GetReferencedAssemblies() am,我会在需要程序集之前加载它们,并导致性能问题?谢谢!
发布于 2012-08-29 16:31:17
不要每次请求都这样做:尽可能早地进行缓存;反射很慢。
预装所有程序集并在应用程序启动时完成;我在我们的许多网站上使用了一个系统,它必须根据部署的程序集进行大量的动态操作,并且在启动时完成所有的工作。
是的,因此启动速度较慢,但这比每次请求花费的时间要长得多。
然后,您很可能会对我刚才问过并回答的关于如何可靠地预加载所有已部署的程序集的问题感兴趣:How to pre-load all deployed assemblies for an AppDomain。
直到今天,我仍然使用同样的过程,它就像一种魅力。
https://stackoverflow.com/questions/12182384
复制相似问题