Invoke中的参数计数不匹配

时间:2014-09-12 12:00:45

标签: c# system.reflection

我对这个方法有错误。

public static FReturn<T> GetByParameters<T>(FObjectParametersb parameters, bool useOr = false) where T : new();


public class FObjectParameters : ICollection<FObjectParameter>, IEnumerable<FObjectParameter>, IEnumerable
{
    //some code
}

var parameters = new FObjectParameters();

foreach (KeyValuePair<string, string> item in Param)
    parameters.Add(item.Key, item.Value);

var getMethod = MainType.BaseType.BaseType.GetMethod("GetByParameters").MakeGenericMethod(MainType);

object Invoke = getMethod.Invoke(null, new object[] { parameters });

1 个答案:

答案 0 :(得分:2)

您似乎需要提供可选参数

object Invoke = getMethod.Invoke(null, new object[] { parameters, false });

我想这是因为你直接用Reflection调用方法,所以没有编译器魔法。我想当你使用可选参数时,如果你不提供可选参数,编译器通过传递默认值来调用方法所以在这种情况下你需要提供它,即使它是可选的...