【发布时间】:2019-12-07 14:08:04
【问题描述】:
请看这段代码:
// this method have a optional parameter
public static void Foo(int a = 3) { }
var del = new Action<int>(Foo);
// pass Type.Missing
del.DynamicInvoke(Type.Missing);
// or
del.DynamicInvoke(new object[] { Type.Missing });
它会得到异常System.ArgumentException:
System.ArgumentException: Missing parameter does not have a default value.
Parameter name: parameters
at System.Reflection.MethodBase.CheckArguments(Object[] parameters, Binder binder, BindingFlags invokeAttr, CultureInfo culture, Signature sig)
at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Delegate.DynamicInvokeImpl(Object[] args)
at xxx.btnSetting_Click(Object sender, EventArgs e) in xxx\FmMain.cs:line 106
请帮忙。
【问题讨论】:
-
@thehennyyHmmm,不是真的,那个问题是关于匹配委托和方法的,这个问题是关于执行问题的。请取消重复标志,谢谢。
-
即使问题不同,链接的答案也能解释情况。
-
@thehennyy我不这么认为,这个问题是关于
DynamicInvoke的,没有答案的说吧。
标签: c# .net reflection delegates