c#反射入門篇(Reflection)——FieldInfo 發(fā)現(xiàn)類字段

也算記錄自己的學習篇=侥猬。= 適合入門看 這里簡單介紹下FieldInfo 和他基本的幾個方法

簡介

FieldInfo就是通過反射指定類獲取到的 該類里面字段的屬性并提供對字段元數(shù)據(jù)的訪問權限。

1.如何獲取?

Type.GetField(String) 獲取該類的指定的名字String公開的字段 如果私有會為空
Type.GetField(String,BindingFlags) 獲取該類的指定的名字String,和指定類型BindingFlags的字段
Type.GetFields() 獲取該類的所有公開的字段
Type.GetFields(BindingFlags) 獲取該類的所有指定類型BindingFlags的字段

例子

先定義個類型

  public class Field
   {
      public int A;
      public string B;

      private int C;
      private string D;
  }
Type.GetField(String)
         FieldInfo feldInfo1 = typeof(Field).GetField("A");
        FieldInfo feldInfo2 = typeof(Field).GetField("C");/,

        Console.WriteLine(feldInfo1.Name);
        Console.WriteLine(feldInfo2.Name);
        Console.ReadKey();
image.png

可以看出來第二個C是私有的所以會為空

Type.GetField(String,BindingFlags)
         FieldInfo feldInfo1 = typeof(Field).GetField("A");
        FieldInfo feldInfo2 = typeof(Field).GetField("C",BindingFlags.NonPublic|BindingFlags.Instance);//BindingFlags.Instance(對象) 和 BindingFlags.Static(靜態(tài)) 必須有一個羡宙,

        Console.WriteLine(feldInfo1.Name);
        Console.WriteLine(feldInfo2.Name);
        Console.ReadKey();

結果:
image.png

用上了 BindingFlags之后就可以獲取到指定的類型 但是有一點必須的是BindingFlags.Instance(對象) 和 BindingFlags.Static(靜態(tài)) 必須有一個簇抵,

Type.GetFields()
Type.GetFields(BindingFlags)
       FieldInfo[] feldInfos1 = typeof(Field).GetFields();
        FieldInfo[] feldInfos2 = typeof(Field).GetFields(BindingFlags.NonPublic | BindingFlags.Instance);

        foreach (FieldInfo item in feldInfos1)
        {
            Console.WriteLine("不加BindingFlags:" + item.Name);
        }
        foreach (FieldInfo item in feldInfos2)
        {
            Console.WriteLine("加BindingFlags:" + item.Name);
        }

        Console.ReadKey();

結果:

2.常用屬性

這里就列幾個基礎的=阐斜。=完全的可以自己 去看c#的API

屬性 作用
Attributes 獲取與此字段關聯(lián)的特性(\color{red}{就是獲取字段私有化 公開的箱蝠,靜態(tài)那些特性})
Custom 獲取包含此成員自定義屬性的集合。
DeclaringType 獲取是誰聲明該模塊成員的類的Type
FieldType 獲取這個字段對象的Type
ReflectedType 獲取 MemberInfo 的此實例的類對象(\color{red}{大概就是獲取這個字段的Type})
還有一堆is開頭的bool屬性 都是字面意思 就是判斷是否含有

3.方法 =汇陆。=我就寫下基礎的幾個

  • 先聲明一個類

  public class Field
        {
         public int A;
         public string B;
        public Action action;
        private int C;
        private string D;
        }
  • 賦值 SetValue(Object, Object)

    • SetValue(含有這個字段的類的對象怒炸,要賦的值)

       Action action=()=> { };
       Field field = new Field();
      Console.WriteLine(field.action ==null ? "空的" : "不為空" );
       FieldInfo fieldaction = field.GetType().GetField("action");
       fieldaction.SetValue(field,action);
       Console.WriteLine(field.action == null ? "空的" : "不為空");
       Console.ReadKey();
      
    • 結果
      image.png
  • 獲取值 GetValue(Object)

    • GetValue(含有這個字段的類的對象)
          Field field = new Field();
            Console.WriteLine(field.A);
            field.A += 10;
            Console.WriteLine(field.GetType().GetField("A").GetValue(field));
            Console.ReadKey();
    
    • 結果:
      image.png

好了 差不多結束了=。= 不定期更新下篇

u3d萌新QQ群844087555 歡迎進來灌水=毡代。=

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末阅羹,一起剝皮案震驚了整個濱河市勺疼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌捏鱼,老刑警劉巖恢口,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異穷躁,居然都是意外死亡耕肩,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門问潭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來猿诸,“玉大人,你說我怎么就攤上這事狡忙∈崴洌” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵灾茁,是天一觀的道長窜觉。 經常有香客問我,道長北专,這世上最難降的妖魔是什么禀挫? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮拓颓,結果婚禮上语婴,老公的妹妹穿的比我還像新娘。我一直安慰自己驶睦,他們只是感情好砰左,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著场航,像睡著了一般缠导。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上溉痢,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天僻造,我揣著相機與錄音,去河邊找鬼适室。 笑死嫡意,一個胖子當著我的面吹牛举瑰,可吹牛的內容都是我干的捣辆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼此迅,長吁一口氣:“原來是場噩夢啊……” “哼汽畴!你這毒婦竟也來了旧巾?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤忍些,失蹤者是張志新(化名)和其女友劉穎鲁猩,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體罢坝,經...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡廓握,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了嘁酿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片隙券。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖闹司,靈堂內的尸體忽然破棺而出娱仔,到底是詐尸還是另有隱情,我是刑警寧澤游桩,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布牲迫,位于F島的核電站,受9級特大地震影響借卧,放射性物質發(fā)生泄漏盹憎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一铐刘、第九天 我趴在偏房一處隱蔽的房頂上張望脚乡。 院中可真熱鬧,春花似錦滨达、人聲如沸奶稠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽锌订。三九已至,卻和暖如春画株,著一層夾襖步出監(jiān)牢的瞬間辆飘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工谓传, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蜈项,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓续挟,卻偏偏與公主長得像紧卒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子诗祸,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內容