ホームページ >バックエンド開発 >C++ >C# リフレクションを使用して型から定数を抽出する方法

C# リフレクションを使用して型から定数を抽出する方法

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-05 19:43:44422ブラウズ

How to Extract Constants from a Type Using C# Reflection?

リフレクションを使用して任意の型から定数を抽出する方法

リフレクションは、実行時に型を検査する強力な方法を提供します。これにより、型のプロパティ、メソッド、さらにはその定数に関する情報を取得できます。

リフレクションを使用して型のすべての定数を取得するには、特定のバインド フラグを指定して GetFields メソッドを利用できます。

BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy

これらのフラグにより​​、現在の型またはその基本型で宣言されているすべてのパブリックな静的フィールドが確実に取得されます。

After FieldInfo オブジェクトの配列を取得する場合、IsLiteral フラグと IsInitOnly フラグをチェックすることで定数のみを含むようにオブジェクトをフィルタリングできます。

if(fi.IsLiteral && !fi.IsInitOnly)

IsLiteral フラグはフィールドの値がコンパイル時に割り当てられることを示し、IsInitOnly フラグはフィールドの値がコンパイル時に割り当てられることを示します。フィールドがコンストラクター内でのみ初期化できることを示します。定数の場合、これらのフラグは両方とも true である必要があります。

このアプローチを使用すると、リフレクションを使用して任意の型からすべての定数を効率的に抽出できます。

private List<FieldInfo> GetConstants(Type type)
{
    return type.GetFields(BindingFlags.Public | BindingFlags.Static |
            BindingFlags.FlattenHierarchy)
        .Where(fi => fi.IsLiteral && !fi.IsInitOnly).ToList();
}

このメソッドは、FieldInfo オブジェクトのリストを返します。指定された型内で宣言された定数を表します。

以上がC# リフレクションを使用して型から定数を抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。