ASP.NET MVC 4アプリケーションで作業していて、アプリの起動時に、BuildManagerを使用して、参照されているすべてのアセンブリを取得しています。アプリケーション内のすべての種類を調べて、必要なものをいくつか見つけています(動的です)。そのため、起動するまで必要なタイプがわかりません)。
基本的に私のコードは次のようになります。
var allTypes = BuildManager.GetReferencedAssemblies()
.Cast<Assembly>()
.SelectMany(a => a.GetTypes());
私はこれをアプリの起動時だけでなく、動的に型を見つけるために新しいリクエストの開始時にも呼び出しています。
だから私の質問は:
- ASP.NETは必要になるまでアセンブリをロードしないので、呼び出すことで、
BuildManager.GetReferencedAssemblies()
必要になる前にすべてのアセンブリをロードし、パフォーマンスの問題を引き起こしますか? - すべてのタイプを繰り返すことは、リクエストごとに悪い考えですか?タイプをキャッシュすることはできますが、ASP.NETには、キャッシュした後にアセンブリを動的にロードするオプションがあります。もしそうなら、私は確かにそこにあるいくつかのタイプを見逃すかもしれません。
ありがとう!