【发布时间】:2012-08-31 06:33:01
【问题描述】:
我有以下方法:
private static object[] GenerateParameters(MethodBase executingMethod)
{
var parameterInfoList = MethodBase.GetCurrentMethod().GetParameters();
var parameterObjectList = new List<object>();
for (var i = 0; i < parameterInfoList.Count(); i++)
{
parameterObjectList.Add(parameterInfoList.GetValue(i));
}
return parameterObjectList.ToArray();
}
在我看来,这是臃肿和过于复杂。有没有办法把这个方法变成一两行代码来做同样的事情?可能使用 Lambda 或 LINQ。
我之所以觉得它这么臃肿,是因为只能从一个parameterInfo数组中获取参数的值,而不是每个parameterInfo(parameterInfo没有GetValue)。必须有更好的方法来做到这一点。
编辑
有很多很棒的答案,每个人都有效,所以谢谢大家。
【问题讨论】:
-
GetValue(0)或者更确切地说是GetValue(i)? -
修复它,我粘贴了我的测试版本并忘记更改它。
标签: linq c#-4.0 reflection lambda refactoring