扩展方法需要满足的条件
1、扩展方法必须定义在静态类里。
2、扩展方法必须是静态方法。
3、扩展方法的第一个参数以this修饰符为前缀。
4、扩展方法必须在使用它的类的扩展方法内,否则必须显示的using扩展方法所在的命名空间。
5、扩展方法只能被对象调用。
6、其他命名空间下的扩展方法优先级低于当前命名空间的扩展方法。
7、扩展方法完成之后,必须重新生成一次才会有有代码提示。
下面来写个实例,在MVC3中,写个HtmlHelper的Include扩展方法,引入一个HTML页面的代码代码到当前页面。
首先建立一个静态类,然后写上扩展方法:
namespace MVC_AjaxTest { public static class Exten { public static string Include(this HtmlHelper htmlhelper,string path) //扩展HtmlHelper类 { string PhysicalPath = System.Web.HttpContext.Current.Server.MapPath(path); string str = File.ReadAllText(PhysicalPath); return str; //返回读取到的字符串 } } }
然后在根目录新建一个text.htm代码如下:
<div style="background:red">你在他乡还好吗?</div>
视图代码:
@using MVC_AjaxTest
@Html.Raw(@Html.Include("/text.htm"));
要@Html.Raw()是为了防止输出的时候被Html编码了,这样就把源代码当成文字输出了而不解释HTML,浏览器显示代码如下:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现