ホームページ > バックエンド開発 > C++ > .NET で特定の型のすべての派生型を効率的に検索するにはどうすればよいですか?

.NET で特定の型のすべての派生型を効率的に検索するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-01 03:58:11
オリジナル
922 人が閲覧しました

How Can I Efficiently Find All Derived Types of a Given Type in .NET?

派生型の効率的な識別

.NET では、特定の型のすべての派生型を検索することは、実行時操作中に頻繁に発生する便利なタスクです。一般的なアプローチには、読み込まれたアセンブリ内のすべての型を反復処理し、ターゲット型への割り当て可能性をチェックすることが含まれます。ただし、この方法は時間がかかり、コードが乱雑になる可能性があります。

よりパフォーマンスが高く洗練されたソリューションは、LINQ の機能を活用することです。

var listOfDerived = (
    from domainAssembly in AppDomain.CurrentDomain.GetAssemblies()
    from type in domainAssembly.GetTypes()
    where typeof(BaseType).IsAssignableFrom(type)
    select type).ToArray();
ログイン後にコピー

この Linq クエリは、すべてのアセンブリを効率的に検索します。とその型を選択し、指定された基本型から継承するもののみを選択します。

最適化と追加考慮事項

パフォーマンスをさらに最適化するには、GetTypes() の代わりにdomainAssembly.GetExportedTypes() を使用することを検討してください。これにより、公開されている型のみが取得されるため、必要なチェックの数が減る可能性があります。

さらに、IsAssignableFrom には基本型自体が含まれていることにも注意してください。必要に応じて、&& type != typeof(BaseType) を追加して除外します。具象クラスのみをフィルターするには、&& !type.IsAbstract をインクルードします。

結論

LINQ を利用し、これらの最適化を考慮することで、派生型の検索が非常に効率的かつ簡単になります。これにより、コードのパフォーマンスと読みやすさが大幅に向上します。

以上が.NET で特定の型のすべての派生型を効率的に検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート