我目前正在编写覆盖以提供自己的 MVC 控件实现。我想使用可选参数,这样可以节省我编写和维护多个覆盖的工作,就像我现在解决的那样。
我的电话示例
public static MvcHtmlString MyControlFor<TModel, TValue>(this HtmlHelper<TModel> html
, Expression<Func<TModel, TValue>> expression
, object htmlAttributes = null
, params Expression<Func<TModel, object>>[] expressions)
当使用可选参数而不是全部提供时,我需要使用命名参数。我也知道在这种情况下,您需要将数组对象传递给 params 参数才能工作。但在这里我无法弄清楚我怎么能做到这一点。
调用以下命令会出现以下错误(CS0826:未找到隐式类型数组的最佳类型):
@Html.MyControlFor(x => x.property, expressions: new [] { x=>x.property2, x=>x.property3 });
传递强类型数组似乎也不是解决方案,因为编译器无法识别 Expression 类。所以以下似乎不起作用
@Html.MyControlFor(x => x.property
, expressions: new Expression<Func<TModel, object>>[] { x=>x.property2, x=>x.property3 });
有谁知道我怎样才能做到这一点?还是我注定要继续使用覆盖?