リフレクションは、実行時に型を検査する強力な方法を提供します。これにより、型のプロパティ、メソッド、さらにはその定数に関する情報を取得できます。
リフレクションを使用して型のすべての定数を取得するには、特定のバインド フラグを指定して 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 サイトの他の関連記事を参照してください。