在对象上调用方法返回参数字符串-反射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()
,它成功了。这就解决了问题。我不知道引号导致了问题。谢谢。