public Jquery Extra(this HtmlHelper htmlhelper,
string message,
IDictionary<string, object> htmlAttributes)
如果我在声明我的方法时声明这个Htmlhelper htmlhelper,但我不想在调用方法时传递该参数?
我是否有意义答案 0 :(得分:6)
我相信你正试图写一个Extension Method。你这样定义
namespace ExtensionMethods
{
public static class MyExtensions
{
public static Jquery Extra(this HtmlHelper htmlhelper, string message, IDictionary htmlAttributes)
{
//do work
return Jquery;
}
}
}
然后像这样使用它:
HtmlHelper helper = new HtmlHelper();
Jquery jq = helper.Extra(message, htmlAttributes);
答案 1 :(得分:1)
编辑:听起来您希望能够在没有任何HtmlHelper
对象的情况下调用此方法。
如果该方法需要HtmlHelper
,您将无法在没有方法的情况下调用它
您应该重写该方法,使其不需要HtmlHelper
。
您可以使用较少的参数进行重载:
public static Jquery Extra(this HtmlHelper htmlhelper, string message) {
return htmlHelper.Extra(message, null);
}
在C#4中,您还可以使用可选参数:
public Jquery Extra(this HtmlHelper htmlhelper, string message, IDictionary<string, object> htmlAttributes = null) {
我强烈建议您添加一个采用匿名类型的重载:
public static Jquery Extra(this HtmlHelper htmlhelper, string message, object htmlAttributes) {
return htmlHelper.Extra(message, null, new RouteValueDictionary(htmlAttributes));
}
答案 2 :(得分:0)
谁是这个功能的作者?如果是你,那么不包括第一个参数。
public Jquery Extra(string message, IDictionary<string, object> htmlAttributes)
。
如果它是您自己没有编写的代码,则可能需要HtmlHelper
变量,并且您不应尝试将其从函数原型中删除。
你的一条评论说你无法初始化HtmlHelper,这在技术上并不正确。请参阅[msdn参考]。1