[英]How to get the FieldInfo of a field from the value
我想訪問FieldInfo,用於字段上的CustomAttributes以及其他目的,但我不想使用字符串訪問該字段,也不必遍歷類中的所有字段。
如果我有,
class MyClass
{
#pragma warning disable 0414, 0612, 0618, 0649
private int myInt;
#pragma warning restore 0414, 0612, 0618, 0649
public MyClass()
{
BindingFlags flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
Console.WriteLine( GetType().GetField("myInt", flags) );
foreach( FieldInfo fi in GetType().GetFields(flags) )
{
Console.WriteLine( string.Format("{0} {1} {2}", fi.Name, myInt, fi.GetValue(this) ) );
}
}
}
我知道我可以直接通過“ GetField”函數訪問“ myInt”的FieldInfo,如果我有其名稱的字符串,或者循環通過“ GetFields”,那將再次依賴於字符串“ myInt”來確保您ve正確的字段。
是否可以使用ref myInt
或out myInt
,或者我不知道的某個關鍵字可以訪問我,還是我僅限於需要字符串名稱來獲得它?
您的意思是從編譯表達式而不是字符串中獲取memberinfo嗎? 例如
class Program
{
public static void Main()
{
var cls = new MyClass();
Console.WriteLine(GetMemberInfo(cls, c => c.myInt));
Console.ReadLine();
}
private static MemberInfo GetMemberInfo<TModel, TItem>(TModel model, Expression<Func<TModel, TItem>> expr)
{
return ((MemberExpression)expr.Body).Member;
}
public class MyClass
{
public int myInt;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.