声明我不想传递的参数

时间:2010-07-14 13:13:48

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

 public Jquery Extra(this HtmlHelper htmlhelper, 
                     string message, 
                     IDictionary<string, object> htmlAttributes)

如果我在声明我的方法时声明这个Htmlhelper htmlhelper,但我不想在调用方法时传递该参数?

我是否有意义

3 个答案:

答案 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