C 中訪問私有成員

2021-09-06 00:19:06 字數 2798 閱讀 3634

首先我必須承認訪問乙個類的私有成員不是什麼好做法。大家也都知道私有成員在外部是不能被訪問的。而乙個類中會存在很多私有成員:如私有字段、私有屬性、私有方法。對於私有成員訪問,可以套用下面這種非常好的方式去解決。

private string name;

public string name

set}

但是有時候,源**是別人的,你就不能修改源**,只提供給你dll。或者你去維護別人的**,源**卻有丟失。這樣的情況如果你想知道私有成員的值,甚至去想直接呼叫類裡面的私有方法。那怎麼辦呢?其實在.net中訪問私有成員不是很難,這篇文章提供幾個簡單的方法讓你如願以償。

為了讓**用起來優雅,使用擴充套件方法去實現。

1、得到私有欄位的值:

public static t getprivatefield(this object instance, string fieldname)

2、得到私有屬性的值:

public static t getprivateproperty(this object instance, string propertyname)

3、設定私有成員的值:public static void setprivatefield(this object instance, string fieldname, object value)

4、設定私有屬性的值:

public static void setprivateproperty(this object instance, string propertyname, object value)

5、呼叫私有方法:

public static t callprivatemethod(this object instance, string name, params object param)

測試:

下面我們使用乙個測試類,進行測試。新建乙個類庫專案,測試的類**如下:

public class 

testclass

private int privatefield1;

private int privatefield2;

private string privatefielda

private string privatefieldb

private int add()

private string join()

}

將上面類庫的dll引入控制台專案中。使用下面**去使用這個類的私有成員:

testclass obj = new 

testclass();

system.console.writeline("私有字段");

system.console.writeline(obj.getprivatefield("privatefield1"));

system.console.writeline(obj.getprivatefield("privatefield2"));

system.console.writeline("私有屬性");

system.console.writeline(obj.getprivateproperty("privatefielda"));

system.console.writeline(obj.getprivateproperty("privatefieldb"));

system.console.writeline("私有方法");

system.console.writeline(obj.callprivatemethod("add",null));

system.console.writeline(obj.callprivatemethod("join", null));

system.console.writeline("修改私有屬性");

obj.setprivateproperty("privatefielda", "hello");

obj.setprivateproperty("privatefieldb", "world");

system.console.writeline(obj.callprivatemethod("join", null));

system.console.read();

結果如下:

總結:實現對類私有成員的訪問。

**:

(全文完)

以下為廣告部分

如果您想看下您的**https部署的是否安全,花1分鐘時間來 myssl.com 檢測以下吧。讓您的https**變得更安全!

ssl檢測評估

快速了解https**安全情況。

安全評級(a+、a、a-...)、行業合規檢測、證書資訊檢視、證書鏈資訊以及補完、伺服器套件資訊、證書相容性檢測等。

ssl證書工具

安裝部署ssl證書變得更方便。

ssl漏洞檢測

讓伺服器遠離ssl證書漏洞侵擾

tls robot漏洞檢測、心血漏洞檢測、freak attack漏洞檢測、ssl poodle漏洞檢測、ccs注入漏洞檢測。

C 中訪問私有成員

首先訪問乙個類的私有成員不是什麼好做法。大家都知道私有成員在外部是不能被訪問的。乙個類中會存在很多私有成員 如私有字段 私有屬性 私有方法。對於私有成員造訪,可以套用下面這種非常好的方式去解決。private string name public string name set 但是有時候,源 是別...

C 中訪問私有成員

首先我必須承認訪問乙個類的私有成員不是什麼好做法。大家也都知道私有成員在外部是不能被訪問的。而乙個類中會存在很多私有成員 如私有字段 私有屬性 私有方法。對於私有成員訪問,可以套用下面這種非常好的方式去解決。private string name public string name set 但是有...

詳解C 中訪問私有成員

首先我必須承認訪問乙個類的私有成員不是什麼好做法。大家也都知道私有成員在外部是不能被訪問的。而乙個類中會存在很多私有成員 如私有字段 私有屬性 私有方法。對於私有成員訪問,可以套用下面這種非常好的方式去解決。private string name public string name set 但是有...