C#无法转换为' System.DateTime'对象[]' methodinfo.invoke

时间:2016-08-01 04:38:17

标签: c# datetime invoke createinstance

看起来我可能以错误的方式接近这个方向,而且方向非常受欢迎。

我试图在我的解决方案中触发所有Start方法。

Start方法采用日期时间

然而,当试图将日期作为" Invoke"的参数传递时我遇到了错误

  

无法从System.DateTime转换为object []

欢迎任何想法

谢谢gws

scheduleDate = new DateTime(2010, 03, 11);

Type[] typelist = GetTypesInNamespace(Assembly.GetExecutingAssembly(), "AssetConsultants");

foreach (Type t in typelist)
{
    var methodInfo = t.GetMethod("Start", new Type[] {typeof(DateTime)} );
    if (methodInfo == null) // the method doesn't exist
    {
       // throw some exception
    }

    var o = Activator.CreateInstance(t);                 
    methodInfo.Invoke(o, scheduleDate);
}

2 个答案:

答案 0 :(得分:8)

方法Invoke的第二个参数需要一个带有参数的对象数组。所以不要在对象arrray中传递DateTime包裹它:

methodInfo.Invoke(o, new object[] { scheduleDate });

答案 1 :(得分:0)

当期望参数是对象数组时,您将作为参数传递给DateTime。

尝试以下方法:

private void button_Click(object sender, EventArgs e)
    {
        var scheduleDate = new DateTime(2010, 03, 11);

        var typelist = System.Reflection.Assembly.GetExecutingAssembly().GetTypes()
                  .Where(t => t.Namespace == "AssetConsultants")
                  .ToList();


        foreach (Type t in typelist)
        {
            var methodInfo = t.GetMethod("Start", new Type[] { typeof(DateTime) });
            if (methodInfo == null) // the method doesn't exist
            {
                // throw some exception
            }

            var o = Activator.CreateInstance(t);

            methodInfo.Invoke(o, new object[] { scheduleDate });
        }

    }