【发布时间】:2011-08-31 16:18:01
【问题描述】:
我习惯了智能感知提供的扩展方法,在键入“this”类型之后。但是,当我使用 HtmlHelper 尝试此操作时,扩展方法不会显示 - 即使存在“使用”语句。为什么是这样?澄清一下,我是在常规 .cs 文件而不是 .cshtml 文件中进行此测试。没有充分的理由,我只是在使用 MVC 命名空间和语言来“看看它是如何运行的”。我仍然不知道为什么智能感知没有拾取所有 4000 个扩展(我夸大了,但有很多)。
说到成千上万的扩展,为什么这些辅助例程作为扩展方法提供?如果使用了典型的静态类,可能一个示例 razor 签名将是:
@EditorExtensions.EditorFor<T>(...)
似乎可行,并且“框架设计指南”指出应该很少使用扩展,并且最好:
- 仅针对接口类型。
- 仅适用于无法重新部署的类型
似乎没有任何扩展方法“标准”适用。这就是为什么我会期望常规的静态类,用静态方法来填充这个卷。理由是什么?
更新:非扩展助手的示例代码(供进一步讨论)
public static class MyHelper
{
public static MvcHtmlString Go(HtmlHelper foo){
foo.Raw("Hello");
return new MvcHtmlString("<p>What's up Doc</p>");
}
}
【问题讨论】:
标签: c# asp.net-mvc extension-methods