C#无法从'System.DateTime'到'object[]'methodinfo.



看,我可能以错误的方式和方向来处理这个问题,这是非常受欢迎的。

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

Start方法采用日期时间

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

无法从System.DateTime转换为对象[]

任何想法欢迎

感谢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);
}

方法Invoke的第二个参数需要一个带有参数的对象数组。因此,与其传递DateTime,不如将其包裹在对象arrray:中

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

当期望的参数是对象数组时,您将传递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 });
        }
    }

相关内容

  • 没有找到相关文章

最新更新