如何获取数组中的方法参数
本文关键字:方法 参数 数组 何获取 获取 | 更新日期: 2023-09-27 18:19:27
想象一下,在一个类中,你得到了这个方法:
float Do(int a_,string b_){}
我正试着做这样的事情:
float Do(int a_, string b_)
{
var params = GetParamsListOfCurrentMethod(); //params is an array that contains (a_ and b_)
}
有人能帮忙吗?
我为什么要这么做?
想象一下你有一个界面:
public Interface ITrucMuch
{
float Do(int a_,string b_);
// And much more fct
}
很多实现接口的类
还有一个特殊的类也实现了接口:
public class MasterTrucMuch : ITrucMuch
{
public floatDo(int a_, string b_)
{
ITrucMuch tm = Factory.GetOptimizedTrucMuch(); // This'll return an optimized trucMuch based on some state
if(tm != null)
{
return tm.Do(a_,b_);
}
else
{
logSomeInfo(...);
}
//do the fallback method
}
由于接口固定了很多方法,并且作为所有方法的第一留置权总是相同的(检查是否有比当前实例更好的接口,如果有,则在实例上调用相同的方法),我尝试对其进行方法化。
Thx
您可以这样做:
var parameters = MethodBase.GetCurrentMethod().GetParameters();
foreach (ParameterInfo parameter in parameters)
{
//..
}
请查看ParameterInfo类。
var params = GetParamsListOfCurrentMethod();
params是一个C#关键字,因此不能像上面那样用作变量名。
这里有一个关于如何使用params关键字的链接http://msdn.microsoft.com/en-us/library/w5zay9db.aspx
以及从文章中提取的一些示例代码。
public static void UseParams(params int[] list)
{
for (int i = 0; i < list.Length; i++)
{
Console.Write(list[i] + " ");
}
Console.WriteLine();
}
使用Reflection.NET获取方法的参数名称。
使用反射获取方法名称和参数
或
http://msdn.microsoft.com/en-us/library/system.reflection.parameterinfo.aspx
您可以使用动态参数编写函数,如下所示:
protected void Do(params object[] list)
{
if (list.Length < 2)
return;
int a_=(int)list[0];
string b_=list[1].ToString();
}
我不明白。如果你想要param值,而这是你需要使用的方法,那么简单地做怎么样
protected void Do(int a_, string b_)
{
var paramValues = new object[]{a_, b_};
}
你想要一个更通用的答案吗?那么你在重复问题。我可以从当前执行的函数中按程序获取参数名称/值吗?以及如何从StackTrace中获取参数值
基本上你不能。