我想调用这个方法:
public IEnumerable<TEntity> SelectAll(params string[] entitiesToLoad)
但是在大多数情况下我都不会加载关系实体,所以我想在没有发送entitiesToLoad值的情况下调用它,如下所示:
var dbResult = methodInfo.Invoke(repository, null);
但它抛出一个异常,因为参数的数量不等同
有没有办法在不将params string []更改为其他类型的参数的情况下执行此操作?
我试过string entitiesToLoad = null as parammeter
,我也遇到了同样的错误。
答案 0 :(得分:5)
传递一个空数组,因为这是C#编译器在为可变方法指示无参数时将传递的内容:
var dbResult = methodInfo.Invoke(repository, new object[] { new string[0] });
请注意,您必须将字符串数组包装到对象数组中,因为该对象数组表示参数列表。第一个传递的参数是空字符串数组。
答案 1 :(得分:2)
似乎这是使用方法重载的完美场景。如果您不需要该值,为什么要发送它?:
public IEnumerable<TEntity> SelectAll(params string[] entitiesToLoad)
{
//...
}
public IEnumerable<TEntity> SelectAll()
{
//...
}