国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁(yè) > 編程 > C# > 正文

詳解C#中訪問(wèn)私有成員的方法

2023-05-08 19:02:31
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

首先訪問(wèn)一個(gè)類的私有成員不是什么好做法。大家都知道私有成員在外部是不能被訪問(wèn)的。一個(gè)類中會(huì)存在很多私有成員:如私有字段、私有屬性、私有方法。對(duì)于私有成員造訪,可以套用下面這種非常好的方式去解決。


 
  1. private string name;  
  2. public string Name  
  3. {  
  4.     get 
  5.     {  
  6.         return name;  
  7.     }  
  8.     set 
  9.     {  
  10.         name = value;  
  11.     }  

但是有時(shí)候,源代碼是別人的,只提供給你dll。或者你去維護(hù)別人的代碼,源代碼卻有丟失。這樣的情況或許你想知道私有成員的值,甚至去想直接調(diào)用類里面的私有方法。那怎么辦呢?在.net中訪問(wèn)私有成員不是很難,這篇文章提供幾個(gè)簡(jiǎn)單的方法讓你如愿以償。

為了讓代碼用起來(lái)優(yōu)雅,使用擴(kuò)展方法去實(shí)現(xiàn)。

1、得到私有字段的值:


 
  1. public static T GetPrivateField<T>(this object instance, string fieldname)  
  2. {  
  3.     BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic;  
  4.     Type type = instance.GetType();  
  5.     FieldInfo field = type.GetField(fieldname, flag);  
  6.     return (T)field.GetValue(instance);  

2、得到私有屬性的值:


 
  1. public static T GetPrivateProperty<T>(this object instance, string propertyname)  
  2. {  
  3.     BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic;  
  4.     Type type = instance.GetType();  
  5.     PropertyInfo field = type.GetProperty(propertyname, flag);  
  6.     return (T)field.GetValue(instance, null);  

3、設(shè)置私有成員的值:


 
  1. public static void SetPrivateField(this objectinstance, stringfieldname, objectvalue)   
  2. {   
  3.     BindingFlagsflag = BindingFlags.Instance | BindingFlags.NonPublic;   
  4.     Typetype = instance.GetType();   
  5.     FieldInfofield = type.GetField(fieldname, flag);   
  6.     field.SetValue(instance, value);   
  7. }  

4、設(shè)置私有屬性的值:


 
  1. public static void SetPrivateProperty(this objectinstance, stringpropertyname, objectvalue)   
  2. {   
  3.     BindingFlagsflag = BindingFlags.Instance | BindingFlags.NonPublic;   
  4.     Typetype = instance.GetType();   
  5.     PropertyInfofield = type.GetProperty(propertyname, flag);   
  6.     field.SetValue(instance, value, null);   
  7. }  

5、調(diào)用私有方法:


 
  1. public static T CallPrivateMethod<T>(this object instance, string name, params object[] param)  
  2. {  
  3.     BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic;  
  4.     Type type = instance.GetType();  
  5.     MethodInfo method = type.GetMethod(name, flag);  
  6.     return (T)method.Invoke(instance, param);  

測(cè)試:

下面我們使用一個(gè)測(cè)試類,進(jìn)行測(cè)試。新建一個(gè)類庫(kù)項(xiàng)目,測(cè)試的類代碼如下:


 
  1. public class TestClass  
  2. {  
  3.  
  4.     public TestClass()  
  5.     {  
  6.         privatefield1 = 1;  
  7.         privatefield2 = 99;  
  8.         PrivateFieldA = "Lo";  
  9.         PrivateFieldB = "ve";  
  10.     }  
  11.  
  12.     private int privatefield1;  
  13.     private int privatefield2;  
  14.     
  15.  
  16.     private string PrivateFieldA  
  17.     {  
  18.         get;  
  19.         set;  
  20.     }  
  21.     private string PrivateFieldB  
  22.     {  
  23.         get;  
  24.         set;  
  25.     }  
  26.  
  27.  
  28.     private int Add()  
  29.     {  
  30.         return privatefield1 + privatefield2;  
  31.     }  
  32.     private string Join()  
  33.     {  
  34.         return PrivateFieldA + PrivateFieldB;  
  35.     }  

將上面類庫(kù)的dll引入控制臺(tái)項(xiàng)目中。使用下面代碼去使用這個(gè)類的私有成員:


 
  1. TestClass obj = new TestClass();  
  2. System.Console.WriteLine("私有字段");  
  3. System.Console.WriteLine(obj.GetPrivateField<int>("privatefield1"));  
  4. System.Console.WriteLine(obj.GetPrivateField<int>("privatefield2"));  
  5.  
  6. System.Console.WriteLine("私有屬性");  
  7. System.Console.WriteLine(obj.GetPrivateProperty<string>("PrivateFieldA"));  
  8. System.Console.WriteLine(obj.GetPrivateProperty<string>("PrivateFieldB"));  
  9.  
  10. System.Console.WriteLine("私有方法");  
  11. System.Console.WriteLine(obj.CallPrivateMethod<int>("Add",null));  
  12. System.Console.WriteLine(obj.CallPrivateMethod<string>("Join"null));  
  13.  
  14. System.Console.WriteLine("修改私有屬性");  
  15. obj.SetPrivateProperty("PrivateFieldA""hello");  
  16. obj.SetPrivateProperty("PrivateFieldB""world");  
  17. System.Console.WriteLine(obj.CallPrivateMethod<string>("Join"null));  
  18. System.Console.Read(); 

結(jié)果如下:

hhh

總結(jié):實(shí)現(xiàn)對(duì)類私有成員的訪問(wèn)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
导航福利在线| 国产精品99999| а√天堂8资源在线官网| 精品无人乱码| 青青草视频免费在线观看| 欧美韩日国产| 国产丝袜自拍| 国产经典av| 阿v免费在线观看| 中文字幕在线观看播放| 精品视频vs精品视频| 蜜桃视频中文字幕| 91在线视频免费看| 九九免费视频| 在线中文av| 国产美女av在线| 国产精品666| 激情视频国产| 午夜在线视频| 国产精品9区| 久久精品无码一区二区日韩av| 午夜视频在线观看网站午夜视频在线 | 91xxx在线观看| 99爱视频在线观看| 中文字幕日本三级| 国产美女被遭强高潮免费网站| 91网页在线观看| 国产乱在线观看视频| 日本成人网址| 亚洲精品天堂在线| 国产超级va在线视频| 国产一区二区三区四区尤物| 99爱视频在线观看| 天堂中文字幕在线| 黄色电影网站在线观看| av片在线观看| 亚洲精品aaaa| 日本高清中文字幕二区在线| 在线观看国产视频| 精品国语对白精品自拍视| 最新中文字幕av专区| 99视频资源网| 中文字幕日本在线| 国产区在线视频| 国产黄色免费网站| 中文字幕av免费| 中文在线观看视频| 香蕉视频在线观看www| 伊人中文在线| 天天草天天草| 午夜国产福利在线| 国产第一页在线| 在线免费黄色毛片| 欧美日韩在线中文字幕| 国产尤物视频| 国产高清视频免费最新在线| 精品国产一区二区三区久久久狼牙 | 国产在线激情视频| 久精品在线观看| 国产美女在线一区二区三区| 最近中文字幕mv2018在线高清| 中文字幕麻豆| 6699久久国产精品免费| 全网国产福利在线播放| 福利视频网站导航| 精品国产白色丝袜高跟鞋| 另类高清dbsm日本tvav| 国产精品黄页网站在线播放免费| 在线国产一级| 国产免费视频| www.xxx黄| 国产高潮又爽又无遮挡又免费| av免费在线一区二区三区| 欧美婷婷久久五月精品三区| 91超碰国产在线| gogo在线观看| 91福利在线视频| 国产卡1卡2卡三卡在线| 亚洲国产aⅴ精品| 国产一卡二卡3卡4卡四卡在线| 在线中文字幕av| 国产精品免费视频二三区| 国产尤物一区二区三区| av在线免费观看网| 18 激情视频在线| 国产精品一品| 黄色国产网站在线观看| 热99re久久精品这里都是免费| 国产区在线看| 国产日产一区二区| 99热在线观看免费| 国产69精品久久app免费版| 亚洲精品视频区| 亚洲欧美精选| 亚洲人在线播放| 永久免费av网站| 在线观看av网站永久| 69久久精品| 国产成人午夜电影| 国产区高清在线| 国产精品视频福利一区二区 | 久热免费视频| gogo在线高清视频| 日本不卡影院| 狠狠干婷婷色| 最新国产在线精品91尤物| 开心丁香婷婷深爱五月| 超碰91在线| 黄色av网站在线| 国产免费人人看| 国产日本视频| 亚洲天堂电影在线观看| 日本在线观看| 丁香花在线电影小说观看| 国产毛片毛片| 国产二区视频| 怡红院av在线| 狠狠插狠狠操| 国产精品入口麻豆免费| 999在线视频| 久热精品免费视频| 国产丝袜视频在线播放| 在线免费看黄网站| 国产在线资源| 国产成人综合亚洲欧美在| www.狠狠| 国产高清在线看| 久久国产综合视频| 国产成在线观看免费视频| 久热精品免费视频| 国产精品剧情一区二区在线观看| 精品视频vs精品视频| 国产在线www| 亚洲国产aⅴ精品| 中文字幕网站视频在线| eeuss影院在线观看第一页| 91超碰在线免费| 亚洲精品一区中文字幕电影| 国产精品作爱| a级在线观看| 2020中文字幕在线播放| 国内外激情在线| 天天草天天操| 精品国产免费观看一区| 最近中文字幕mv免费高清在线| 天天操夜夜做| 国产福利在线观看| 国产视频第一区| 中文字幕在线影视资源| 久草网在线视频| www在线视频观看| 亚洲成年人视频| 99精品老司机免费视频| 国产视频1区| 国产精品久久在线| 国产精品国产三级国产试看| 国产九九九九| 国产麻豆一区二区三区精品| 男人天堂网在线观看| www在线视频观看| 日本成人免费网站| 亚洲大香人伊一本线| av免费在线一区二区三区| 精品视频vs精品视频| 国产娇喘精品一区二区三区图片| 中文字幕一区免费| 国产成人精品男人的天堂538| 黄色毛片在线看| 国产精品臀控福利在线观看| 天天爱天天做色综合| 国产激情视频在线| 影音av资源站| 欧美xxxxx性| 天天操天天是| 国产福利片在线| 男人天堂v视频| 好男人社区在线视频| 午夜不卡视频| 18激情网站| 久色视频在线观看| 国产导航在线| 蜜桃视频网站在线| 中文字幕视频在线| av亚洲在线| 国产午夜电影| 日本视频三区| 国产精品合集一区二区| 日本片在线看| 国产福利小视频在线| 俺来俺也去www色在线观看| 国产你懂的在线观看| 国产色a在线观看| gogo在线高清视频| 国产福利图片| 国产主播福利在线| av资源网站在线观看| 国产盗摄精品一区二区酒店| 九九99九九精彩| 在线观看中文字幕一区| 国产天堂素人系列在线视频|