gpt4 book ai didi

c# - 如何更改方法签名/属性以匹配给定的执行示例?

转载 作者:太空宇宙 更新时间:2023-11-03 12:49:57 24 4
gpt4 key购买 nike

所以我有这个:

public static MvcHtmlString TextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, Expression<Func<TModel, ControlPermissionType>> mode)
{
MvcHtmlString value = null;
var modeIn = ModelMetadata.FromLambdaExpression(
mode, htmlHelper.ViewData
).Model;
switch ((ControlPermissionType)modeIn)
{
case ControlPermissionType.Read:
value = htmlHelper.TextBoxFor(expression, new { @readonly = "readonly" });
break;
case ControlPermissionType.Edit:
value = htmlHelper.TextBoxFor(expression);
break;
case ControlPermissionType.Deny:
value = new MvcHtmlString(string.Empty);
break;
}
return value;
}

我是这样调用它的:

@Html.TextBoxFor(a => a.First().BirthDate, a => a.First().Mode)

但我想要的是:

@Html.TextBoxFor(a => a.First().BirthDate, a.Mode)

该怎么做?

编辑:

甚至@Html.TextBoxFor(a => a.First().BirthDate) 但这样如何检查 a 是否正在实现接口(interface)?

编辑 2:

最佳答案

@Html.TextBoxFor(a => a.First().BirthDate, a => a.First().Mode)

需要方法签名:

public static MvcHtmlString TextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, Expression<Func<TModel, ControlPermissionType>> mode)


@Html.TextBoxFor(a => a.First().BirthDate, a.Mode)

需要方法签名:

public static MvcHtmlString TextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, ControlPermissionType mode)


@Html.TextBoxFor(a => a.First().BirthDate)

需要方法签名:

public static MvcHtmlString TextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)

但在最后一种情况下,您错过了 ControlPermissionType。

顺便说一下,如果您尝试使用 @Html.TextBoxFor(a => a.First().BirthDate) 调用您的方法,编译器错误应该是 self 解释的,需要哪种签名方法。

关于c# - 如何更改方法签名/属性以匹配给定的执行示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35912907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com