c# - 如何调用一个方法,该方法将 params string[] 作为其唯一参数而不发送值

标签 c# system.reflection

我想调用这个方法:

public IEnumerable<TEntity> SelectAll(params string[] entitiesToLoad)

但大多数时候我不会加载关系实体,所以我想在不发送 entitiesToLoad 值的情况下调用它,如下所示:

var dbResult = methodInfo.Invoke(repository, null);

但是会抛出异常,因为参数个数不相等。

有没有一种方法可以在不将 params string[] 更改为另一种类型的参数的情况下执行此操作?

我尝试了 string entitiesToLoad = null as parameter,我得到了同样的错误。

最佳答案

传递一个空数组,因为这是 C# 编译器在指示可变参数方法没有参数时将传递的内容:

var dbResult = methodInfo.Invoke(repository, new object[] { new string[0] });

请注意,您必须将字符串数组包装到一个对象数组中,因为该对象数组表示参数列表。第一个传递的参数是空字符串数组。

关于c# - 如何调用一个方法,该方法将 params string[] 作为其唯一参数而不发送值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41568782/

相关文章:

c# - 我应该使用结构吗?

c# - 如何查看项目中是否有Unity Facebook SDK?

c# - 抛出 NullReferenceException 但对象通过了 null 检查,这怎么可能?

javascript - MVC 列表框如何使用 jQuery 来选择所有,删除所有

c# - 在 SqlBulkCopy 期间更改值

c# - Angular 6 Asp.Net(非核心)Web Api CORS 请求失败

c# - HTTP 连接问题

c# - 快速访问在 C# 中包含属性的类型/方法/...

vb.net - 即使类存在,Type.GetType 也会失败

c# - 表达式树 C# - 空条件运算符 (?.)