【问题标题】:How HtmlHelper.AnonymousObjectToHtmlAttributes works behind the scenes? (Method calls itself)HtmlHelper.AnonymousObjectToHtmlAttributes 如何在幕后工作? (方法调用自身)
【发布时间】:2016-05-15 01:32:22
【问题描述】:

我用System.Web.MVC.dll的ILSpy做了一个反射,发现了如下代码:

public static RouteValueDictionary AnonymousObjectToHtmlAttributes(object htmlAttributes)
    {
        return HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
    }

有人可以帮助我了解这里到底发生了什么吗?这应该会导致 StackOverflow 异常,但不会。

【问题讨论】:

  • 是什么让你认为它会抛出StackOverflowException?该方法正在调用HtmlHelper类的AnonymousObjectToHtmlAttributes()方法
  • @Stephen Muecke 它在调用自己。
  • 在哪里?这是source codeHtmlHelper。您显示的方法不是HtmlHelper 类中的代码。它在另一个类中,该类调用HtmlHelperAnonymousObjectToHtmlAttributes(htmlAttributes) 静态方法。他们只是碰巧同名。
  • @StephenMuecke 谢谢!

标签: c# asp.net-mvc reflection


【解决方案1】:

正如 Stephen Muecke 上面所评论的,来自 System.Web.MVC.HtmlHelper 的方法 AnonymousObjectToHtmlAttributes 正在调用具有相同名称但来自 System.Web.WebPages.Html.HtmlHelper 的方法。

ILSpy 没有明确说明这一点。我需要将班级悬停以显示它来自哪里:

我不是第一个使用 doubt 的人,我相信这是一个常见的错误。

【讨论】:

    猜你喜欢
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 2017-10-22
    • 2014-11-18
    相关资源
    最近更新 更多