【问题标题】:How i can pass two params Expression inside my method我如何在我的方法中传递两个参数表达式
【发布时间】:2015-03-06 23:57:24
【问题描述】:

我正在开发一个 asp.net mvc web 应用程序,我需要传递两个参数表达式,如下所示:-

public RackJoin AllFindDetails(int id, params Expression<Func<Server, object>>[] includeProperties,params Expression<Func<Resource, object>>[] includeProperties2)
        {

但上面会引发以下错误:-

A parameter array must be the last parameter in a formal parameter list

【问题讨论】:

  • 你认为你为什么需要它?如果一个方法可以有两个 params 数组,你认为你会如何调用它?编译器如何知道哪些参数属于哪个params 数组?
  • 这是因为在我的方法中,我正在构建一个视图模型,它将来自不同上下文的两个模型连接起来
  • 为什么需要使用params 数组呢?
  • 传递导航属性我要做什么。包括..
  • 为什么您认为需要将它们作为params 数组传递?

标签: c# asp.net asp.net-mvc-4 asp.net-mvc-5


【解决方案1】:

您需要找到不同的解决方案。由于params 只接受给定的每个参数并将它们填充到一个数组中,因此在同一个函数上的两个实例是没有意义的。

MSDN 将其正式化:

a 中的 params 关键字后面不允许有其他参数 方法声明,并且只允许一个 params 关键字在 方法声明。

规范稍微不那么具体(第 1.6.6.1 节):

只有方法的最后一个参数可以是参数数组,参数数组的类型必须是一维数组类型。

但只允许最后一个参数为params 意味着只能有一个,因为根据定义,第二个参数也不能是最后一个。

【讨论】:

  • 但在我的情况下,我需要传递两个参数,因为我有来自两个不同上下文的两个模型类,我需要在构建视图模型之前为它们添加 .Include ...跨度>
  • 这需要params,因为?就像我说的,你别无选择,你必须找到不同的解决方案。我对 MVC 不够熟悉,无法确切了解您的意思,但为什么不接受两个 IEnumerable
猜你喜欢
  • 2023-03-17
  • 2016-11-19
  • 1970-01-01
  • 1970-01-01
  • 2018-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多