私はType.GetFields()を呼び出し、唯一の「公共のconst」として宣言されたフィールドを取り戻すしたいだけ戻っ「公共のconst」フィールド。私はこれまでこれを持っています...Type.GetFields() -
type.GetFields(BindingFlags.Static | BindingFlags.Public)
... "public static"フィールドも含まれています。
私はType.GetFields()を呼び出し、唯一の「公共のconst」として宣言されたフィールドを取り戻すしたいだけ戻っ「公共のconst」フィールド。私はこれまでこれを持っています...Type.GetFields() -
type.GetFields(BindingFlags.Static | BindingFlags.Public)
... "public static"フィールドも含まれています。
FieldInfo.Attributes
はFieldAttributes.Literal
が含まれているかどうかをチェックしよう。私はそれをチェックしていないが、それは右に聞こえる...
(私はあなたがだけGetFields
への単一の呼び出しで定数がありますが、結果がそのように返さフィルタリングすることができます得ることができるとは思わない。)
type.GetFields(BindingFlags.Static | BindingFlags.Public).Where(f => f.IsLiteral);
あなたは
public class ConstTest
{
private const int ConstField = 123;
public int GetValueOfConstViaReflection()
{
var fields = this.GetType().GetRuntimeFields();
return (int)fields.First(f => f.Name == nameof(ConstField)).GetValue(null);
}
}
は、私がチェックし、フィールドがすべてのプライベートconstsを持っているように見えることを行うことができます。