比如说,我有一个像这样的 XML 字符串,
<METHOD>foo</METHOD>
<PARAM1>abc</PARAM1>
<PARAM2>def</PARAM2>
...
<PARAM99>ghi</PARAM99>
<PARAM100>jkl</PARAM100>
我有一个方法
void foo(String param1, String param2, ..., String param99, String param100)
{
...
}
有没有什么简单的方法可以让我将此字符串映射到真正的方法调用,并且参数与 C# 中方法的参数名称匹配?
假设您知道该类型,有它的实例,并且该方法实际上是公共的:
string methodName = parent.Element("METHOD").Value;
MethodInfo method = type.GetMethod(methodName);
object[] arguments = (from p in method.GetParameters()
let arg = element.Element(p.Name)
where arg != null
select (object) arg.Value).ToArray();
// We ignore extra parameters in the XML, but we need all the right
// ones from the method
if (arguments.Length != method.GetParameters().Length)
{
throw new ArgumentException("Parameters didn't match");
}
method.Invoke(instance, arguments);
请注意,我在这里进行区分大小写的名称匹配,这不适用于您的示例。如果您想要不区分大小写,则稍微困难一些,但仍然可行 - 就我个人而言,我建议您尽可能使 XML 与方法匹配。
(如果它是非公开的,您需要为调用提供一些绑定标志GetMethod
.)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)