在对象上调用方法返回参数字符串-反射C#
我试图使用反射来调用对象上的方法,可能涉及到一些参数。当没有指定参数时,该代码工作正常,但当有参数时返回错误的数据 这是我的密码:在对象上调用方法返回参数字符串-反射C#,c#,reflection,methods,invoke,C#,Reflection,Methods,Invoke,我试图使用反射来调用对象上的方法,可能涉及到一些参数。当没有指定参数时,该代码工作正常,但当有参数时返回错误的数据 这是我的密码: object temp = readerTask.GetType().GetProperty(bsplit[0]).GetValue(readerTask, null); if (useParams) { MethodInfo methodInfo = temp.GetType().GetMethod(bsplit[1].Split(new char[]
object temp = readerTask.GetType().GetProperty(bsplit[0]).GetValue(readerTask, null);
if (useParams)
{
MethodInfo methodInfo = temp.GetType().GetMethod(bsplit[1].Split(new char[] { '(' })[0], new[] { typeof(string) });
string p = bsplit[1].Split(new char[] { '(', ')' })[1];
value = methodInfo.Invoke(temp, new[] { p });
}
else
{
value = temp.GetType().GetMethod(bsplit[1]).Invoke(temp, null);
}
例如,我的输入字符串是Date.ToString(“MMMM-dd,yyyy”)
对象temp中有我想要格式化的正确日期对象,但是当我运行代码时,值变量中的数据是MMMM dd,yyyy
如何获得正确运行和使用参数的方法?
p
不是“MMMM dd,yyyy”
,而是“\”MMMM dd,yyyy\”
它可以通过Console.WriteLine(DateTime.Now.ToString(“\”MMMM dd,yyyy\”)轻松检查代码>精确打印“MM dd,yyyy”
您应该删除'“
符号:
MethodInfo methodInfo = temp.GetType().GetMethod(bsplit[1].Split(new char[] { '(' })[0], new[] { typeof(string) });
string p = bsplit[1].Split(new char[] { '(', ')' })[1];
if (p[0] = '"')
{
p = p.Substring(1, p.Length - 2);
}
value = methodInfo.Invoke(temp, new[] { p });
Date是如何定义的
?你确定temp是一个DateTime
对象吗?如果你能提供一个简短但完整的程序来演示这个问题,那会很有帮助。@StephenReindl-Date实际上是输入表单中的一个字符串,我使用Date
来获取包含在不同自定义类中的日期时间对象。@EugenePodskal-它是一个DateTime
对象。我尝试调用另一个方法,如ToSortDateString()
,它成功了。这就解决了问题。我不知道引号导致了问题。谢谢。