【发布时间】:2013-08-04 15:04:54
【问题描述】:
我想使用 C# 获取任何方法的参数值,即使它们具有不同数量的参数 例如,如果您有以下 3 种方法:
public void method1 (string param1)
{
List<string> parametervalues = getParameters(this.Method);
}
public void method2 (int param1, string param2)
{
List<string> parametervalues = getParameters(this.Method);
}
public void method3 (string param1, int param2, bool param3)
{
List<string> parametervalues = getParameters(this.Method);
}
所以在 getParameters 方法中,它将采用方法名并以字符串列表的形式返回参数的值,而不管参数的数量是否存在。
我达到了一个点,我可以得到参数的数量,但没有如下值
var method = MethodInfo.GetCurrentMethod();
var parameters = method.GetParameters();
List<string> parameterList = new List<string>();
if (parameters.Length > 0)
{
foreach (var p in parameters)
{
parameterList.Add(p.Name);
}
}
更新:
我找到了另一种方法,使用 (params object[] values) 作为方法参数,如下所示
method1(string a, string b, string c)
{
list<string> = getParameterasList(a,b,c);
}
getParameterasList(params object[] values)
{
List<string> parameterList = new List<string>();
if (values.Length > 0)
{
foreach (var v in values)
{
parameterList.Add(v.ToString());
}
}
return parameterList;
}
【问题讨论】:
-
不能通过反射得到参数的值。
-
这是一种使用反射以外的其他方式获取值的方法吗?
-
据我所知,没有。
标签: c# methods parameters methodinfo