激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - C#訪問及調用類中私有成員與方法示例代碼

C#訪問及調用類中私有成員與方法示例代碼

2022-02-24 14:07cnc C#

訪問一個類的私有成員不是什么好做法,大家也都知道私有成員在外部是不能被訪問的,這篇文章主要給大家介紹了關于C#訪問及調用類中私有成員與方法的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下

開發背景

開發工具:vs2017

語言:c#

dotnet版本:.net framework 4.0及以上

系統:win10 x64

一、首先建立一個控制臺app,并命名為consoleapp,如下圖所示:

C#訪問及調用類中私有成員與方法示例代碼

二、新建一個person類

并在類里面添加兩個成員,一個是name字段,另外一個是display方法,該方法帶有一個“前綴”輸入參數prefix,用于加在name字段前面,如下代碼所示:

?
1
2
3
4
5
6
7
8
class person
 {
  string name;
  void display(string prefix)
  {
   console.writeline($"{prefix},{name}");
  }
 }

三、將system.reflection引用進來,這里是本隨筆的關鍵所在

如下圖所示:

?
1
using system.reflection;

四、如何設置及訪問name字段?

在這里我們使用反射技術,使用type類里的反射機制進行訪問,

1)公用部分,具體代碼如下:

?
1
2
3
4
person person = new person();
type type = typeof(person);
bindingflags flags = bindingflags.nonpublic | bindingflags.instance;
fieldinfo finfo = type.getfield("name", flags);

2)設置name字段,設置方法如下代碼所示:

?
1
finfo.setvalue(person,"cnxy");

3)訪問name字段,訪問方法如下代碼所示:

?
1
var name = finfo.getvalue(person);

4)name字段結果如下:

C#訪問及調用類中私有成員與方法示例代碼

說明:

bindingflags.nonpublic:搜索非公有方法的成員;

bindingflags.instance:搜索成員實例,包括字段及方法等。

五、如何訪問display私有方法?

同樣,借用第四部分代碼(person及flags),具體代碼如下:

?
1
2
methodinfo minfo = type.getmethod("display",flags);
minfo.invoke(person, new object[] { "hello" });

輸出結果如下:

C#訪問及調用類中私有成員與方法示例代碼

說明:

invoke用于調用方法,后面的參數使用數組的方法,如有一個參數,則輸入一個參數的object數組,如有多個參數,則輸入多個參數的object數組。

六、源代碼如下:

consoleapp.rar

七、實際用處

system.windows.forms下面有一個類,名叫notifyicon,其設置的text只能是63個字符,所想輸入大于63個字符,如下設置方法是行不通的,代碼如下:

?
1
2
notifyicon ni = new notifyicon();
ni.text = "64個字符(實際有64個字符,這里并沒有達到個數,僅作展示)";

那么,我們必須另外的方法來繞過notifyicon的限制,這里使用了反射技術(也就是以上所說的),代碼如下:

?
1
2
3
4
5
6
7
notifyicon ni = new notifyicon();
string text = "大于63個字符,小于127個字符的字符串";
if (text.length >= 128) throw new argumentoutofrangeexception("text limited to 127 characters");
type t = typeof(notifyicon);
bindingflags hidden = bindingflags.nonpublic | bindingflags.instance;
t.getfield("text", hidden).setvalue(ni, text);
if ((bool)t.getfield("added", hidden).getvalue(ni)) t.getmethod("updateicon", hidden).invoke(ni, new object[] { true });

以上的限制個數為大于63個,小于127個。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:https://www.cnblogs.com/cncc/p/8249768.html

延伸 · 閱讀

精彩推薦
  • C#C#通過KD樹進行距離最近點的查找

    C#通過KD樹進行距離最近點的查找

    這篇文章主要為大家詳細介紹了C#通過KD樹進行距離最近點的查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    帆帆帆6112022-01-22
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    E-iceblue5012022-02-12
  • C#Unity3D實現虛擬按鈕控制人物移動效果

    Unity3D實現虛擬按鈕控制人物移動效果

    這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    shenqingyu060520232410972022-03-11
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    吳 劍8332021-12-08
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    這篇文章主要介紹了C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結合具體實例形式分析了C#使用訪問者模式解決長...

    GhostRider9502022-01-21
  • C#深入解析C#中的交錯數組與隱式類型的數組

    深入解析C#中的交錯數組與隱式類型的數組

    這篇文章主要介紹了深入解析C#中的交錯數組與隱式類型的數組,隱式類型的數組通常與匿名類型以及對象初始值設定項和集合初始值設定項一起使用,需要的...

    C#教程網6172021-11-09
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

    這篇文章主要為大家詳細介紹了C#實現XML文件讀取的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Just_for_Myself6702022-02-22
  • C#WPF 自定義雷達圖開發實例教程

    WPF 自定義雷達圖開發實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下...

    WinterFish13112021-12-06
主站蜘蛛池模板: 亚洲乱搞 | 中文字幕四区 | 成人午夜视频免费 | 日本黄色免费片 | 国产小视频在线观看 | 2018亚洲男人天堂 | 成年性羞羞视频免费观看 | 国产九色在线观看 | 国产美女自拍av | 日本视频在线免费观看 | 91在线色 | 精品人成 | 国产青草视频在线观看 | 国产一区视频在线观看免费 | 国产免费成人 | 精品久久中文字幕 | 久久久久久久久成人 | 亚洲天堂成人在线 | 成人毛片网| 国产一区二区久久精品 | 久久精品超碰 | 黄色av免费网站 | 在线观看一区二区三区四区 | av懂色 | 中国女警察一级毛片视频 | 国产成人羞羞视频在线 | 久久av免费| 国产免费让你躁在线视频 | 免费久久久 | 亚洲 91| 日韩精品免费一区二区三区 | 快播av在线 | 羞羞电影在线观看 | 日本中文字幕网址 | 91网视频| 成年人网站视频免费 | 久久久久久久久国产精品 | 成人毛片免费视频 | 91看片淫黄大片欧美看国产片 | 在线播放中文 | 夜夜看 |