代码生成就用Razor模板
2012-11-14 11:55 zhoujie 阅读(10273) 评论(23) 编辑 收藏 举报程序员都自己写过代码生成器吧?说实在的,我没用过商业化的代码生成器,有那学习怎么使用的功夫自己也写出来一个了。代码生成工具用来避免一些重复劳动,还是很爽的。以前写过好几个,实现的都很蹩脚,主要是模板写起来费事又难看。这次选用Razor模板试试,因为Razor模板语法相对于其他模板,更加简洁,编写的模板看上去更加美观。个人认为:使用框架代替不了代码生成,框架只是粗粒度的提升生产力,而代码生成可以在小方面提升编码效率。
模板编写:
看一下我这里写的一个代码生成模板:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
@foreach (Column col in Model.Columns)
{
<RowDefinition Height="Auto"/>
}
</Grid.RowDefinitions>
@foreach (Column col in Model.Columns)
{
var desp = col.Description ?? col.Name;
<TextBlock Text="@desp" Margin="4" VerticalAlignment="Center"/>
<TextBox Text="{Binding @col.Name}" Grid.Column="1" Margin="4"/>
}
</Grid>
这是一个生成前端Xaml代码的模板,用到了循环foreach、绑定属性及变量定义语句,但是模板看上去一点都不乱。如果用webform的<%%>语法,将会惨不忍睹。
智能感知:
模板的编写完全可以做到智能感知的,只要我们在VS里新建一个文本文件,把扩展名改为cshtml,重新打开,@using用到的命名空间,然后把Model定义为强类型就OK了。当然了,写完以后别忘了删除定义语句。毕竟模板的编写大多数是一次性的,生产力的提高也体现在这里。
模板解析:
借助RazorEngine解析模板,异常简单,项目地址 http://razorengine.codeplex.com/。只需引用2个dll,然后调用如下语句:
第一个参数是我们上面写的模板的字符串形式,第二个参数是数据上下文,返回值就是生成的代码了。
结论:
借助Razor模板写一个简单的自用型代码生成器,变成了一件简单有趣的事情。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库