簡體   English   中英

使用反射獲取方法名稱和參數

[英]Using reflection to get method name and parameters

我正在嘗試以一種方式編寫一種方法,以編程方式為Memcached創建一個基於方法名稱和參數的密鑰。 所以,如果我有一個方法,

string GetName(int param1, int param2);

它會返回:

string key = "GetName(1,2)";

我知道您可以使用反射獲取MethodBase,但是如何獲取字符串中的參數值,而不是參數類型?

您無法從反射中獲取方法參數值。 您必須使用調試/分析API。 您可以獲取參數名稱和類型,但不能獲取參數本身。 抱歉...

你正在尋找的是一個攔截器。 就像名稱所說的那樣,攔截器攔截方法調用,並允許您在調用方法之前和之后執行操作。 這在許多緩存和日志記錄框架中非常流行。

這就是我想出來的(但是,它可能不是特別有效):

MethodBase method = MethodBase.GetCurrentMethod();
string key = method.Name + "(";
for (int i = 0; i < method.GetParameters().Length; i++) {
  key += method.GetParameters().GetValue(i);
  if (i < method.GetParameters().Length - 1)
    key += ",";
}
key += ")";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM