MethodInfo.Invoke参数顺序

Plu*_*luc 2 c# reflection

我正在尝试使用反射来调用方法.

像这样的东西:

method.Invoke(instance, propValues.ToArray())
Run Code Online (Sandbox Code Playgroud)

问题是没有办法确保参数数组的顺序正确.有没有办法具体说明哪个值按名称在哪个参数上进行?或者我真的需要制作自定义活页夹吗?如果是这样,有人能引导我朝正确的方向发展吗?

Jon*_*eet 7

有没有办法具体说明哪个值按名称在哪个参数上进行?

好吧,你按参数顺序指定它们.因此,如果要将特定值映射到特定名称,则应使用method.GetParameters该方法获取参数列表并以此方式映射它们.例如,如果你有一个Dictionary<string, object>参数:

var arguments = method.GetParameters()
                      .Select(p => dictionary[p.Name])
                      .ToArray();
method.Invoke(instance, arguments);
Run Code Online (Sandbox Code Playgroud)