型の派生型の検索
多くの場合、特定の型の派生型を決定する必要があります。ただし、読み込まれたアセンブリ内のすべての型を反復処理したり、それらの割り当て可能性を確認したりするなど、既定のアプローチは非効率的になる可能性があります。
Reflection を使用する
よりパフォーマンスの高いソリューションには、次のような方法があります。リフレクションを使用して派生型を取得します。次に、LINQ ベースのアプローチを示します。
var listOfDerivedTypes = ( from domainAssembly in AppDomain.CurrentDomain.GetAssemblies() from assemblyType in domainAssembly.GetTypes() where type.IsAssignableFrom(assemblyType) select assemblyType).ToArray();
このメソッドは、すべてのアセンブリを反復処理し、指定された型が各アセンブリ型に割り当て可能かどうかを確認します。
Fluent バージョン
読みやすさを向上させるために、流暢なバージョン:
var listOfDerivedTypes = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(domainAssembly => domainAssembly.GetTypes()) .Where(assemblyType => type.IsAssignableFrom(assemblyType)) .ToArray();
考慮事項
以上がリフレクションを使用して、特定の型のすべての派生型を効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。