我想調用Type.GetFields()並只返回聲明爲「public const」的字段。我到目前爲止...Type.GetFields() - 僅返回「公共常量」字段
type.GetFields(BindingFlags.Static | BindingFlags.Public)
...但也包括「公共靜態」字段。
我想調用Type.GetFields()並只返回聲明爲「public const」的字段。我到目前爲止...Type.GetFields() - 僅返回「公共常量」字段
type.GetFields(BindingFlags.Static | BindingFlags.Public)
...但也包括「公共靜態」字段。
試着檢查FieldInfo.Attributes
是否包含FieldAttributes.Literal
。我沒有檢查它,但它聽起來權利...
(我不認爲你可以得到只到GetFields
單個呼叫常數,但你可以過濾返回的結果的方式。)
type.GetFields(BindingFlags.Static | BindingFlags.Public).Where(f => f.IsLiteral);
從.NET 4.5開始,你可以做到這一點
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。