C# 无法从 'System.DateTime' 转换为 'object[]' methodinfo.invoke
C# Cannot convert from 'System.DateTime' to 'object[]' methodinfo.invoke
看,我可能以错误的方式和方向接近这个,非常受欢迎。
我正在尝试触发解决方案中的所有 Start
方法。
Start 方法采用日期时间
然而,当我试图将日期作为 "Invoke" 的参数传递时,我 运行 进入了错误
cannot convert from System.DateTime to 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);
}
方法 Invoke
的第二个参数需要一个包含您的参数的对象数组。因此,与其传递 DateTime
,不如将其包装在对象数组中:
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 });
}
}
看,我可能以错误的方式和方向接近这个,非常受欢迎。
我正在尝试触发解决方案中的所有 Start
方法。
Start 方法采用日期时间
然而,当我试图将日期作为 "Invoke" 的参数传递时,我 运行 进入了错误
cannot convert from System.DateTime to 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);
}
方法 Invoke
的第二个参数需要一个包含您的参数的对象数组。因此,与其传递 DateTime
,不如将其包装在对象数组中:
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 });
}
}