繁体   English   中英

如何调用以 params string[] 作为唯一参数而不发送值的方法

[英]How can I invoke a method that has params string[] as its only parameter without send values

我想调用这个方法:

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

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

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

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

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

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

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

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

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

这似乎是使用方法重载的完美场景。 如果您不需要该值,为什么要发送它?:

public IEnumerable<TEntity> SelectAll(params string[] entitiesToLoad)
{
     //...
}

public IEnumerable<TEntity> SelectAll()
{
     //...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM