【C#】アセンブリで定義されている型を取得する
はい!
とりあえずアセンブリ一覧取得
ASP.NETと.NETで微妙に違うのだけれどもー
// ASP.NET環境の場合 var assemblies = BuildManager.GetReferencedAssemblies().Cast<Assembly>(); // .NET環境の場合 var assemblies = System.AppDomain.CurrentDomain.GetAssemblies();
GetReferencedAssembliesの場合、その名の通り、参照されてるアセンブリたちがぽこっと取れます。つまりロードされていないものも含まれるんですねー。昨日はまってたのはこれ。
んでもって、GetReferencedAssembliesの戻り値はICollection型なので、列挙するにはCastが必要よっと。
Getassemblies()の場合は、ロードされてるアセンブリたちのみ取れる模様。
アセンブリで定義されている型を参照するにはロードされてないとですからねー。
GetAssembliesの戻り値はAssembly[]なのでそのまんまでおっけ。
はい、あとはこれしてあげてくらはい
private static IEnumerable<Type> GetLoadableTypes(Assembly assembly) { try { return assembly.GetTypes(); } catch (ReflectionTypeLoadException ex) { return ex.Types.Where(type => type != null); } }
次に続きますよー