博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
代码生成就用Razor模板
阅读量:6831 次
发布时间:2019-06-26

本文共 1246 字,大约阅读时间需要 4 分钟。

程序员都自己写过代码生成器吧?说实在的,我没用过商业化的代码生成器,有那学习怎么使用的功夫自己也写出来一个了。代码生成工具用来避免一些重复劳动,还是很爽的。以前写过好几个,实现的都很蹩脚,主要是模板写起来费事又难看。这次选用Razor模板试试,因为Razor模板语法相对于其他模板,更加简洁,编写的模板看上去更加美观。个人认为:使用框架代替不了代码生成,框架只是粗粒度的提升生产力,而代码生成可以在小方面提升编码效率。

模板编写:

看一下我这里写的一个代码生成模板:

<
Grid 
x:Name
="LayoutRoot"
 Background
="White"
 Width
="400"
>
    
<
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解析模板,异常简单,项目地址 。只需引用2个dll,然后调用如下语句:

string result = Razor.Parse(template, model);

第一个参数是我们上面写的模板的字符串形式,第二个参数是数据上下文,返回值就是生成的代码了。

结论:

借助Razor模板写一个简单的自用型代码生成器,变成了一件简单有趣的事情。

转载于:https://www.cnblogs.com/hjblog/archive/2012/11/14/2769660.html

你可能感兴趣的文章
Storm工作流程
查看>>
分布式架构设计之电商平台
查看>>
java编程思想——java IO系统
查看>>
SpringBootApplication注解 专题
查看>>
socket服务器的搭建-Mac(转)
查看>>
Opencv探索之路(十九):读写xml和yml文件
查看>>
Eclipse插件开发中的选择监听机制(Selection Provider-Listener)
查看>>
14.并发与异步 - 2.任务Task -《果壳中的c#》
查看>>
Linux时间子系统之三:jiffies
查看>>
使用 VisualVM 进行性能分析及调优
查看>>
linux升级OpenSSL
查看>>
《QQ欢乐斗地主》山寨版
查看>>
病毒木马查杀实战第015篇:U盘病毒之脱壳研究
查看>>
SDK是什么?什么是SDK
查看>>
centos/linux下的使得maven/tomcat能在普通用户是使用
查看>>
Web学习篇之---html基础知识(一)
查看>>
java多线程入门学习(一)
查看>>
多线程间的通讯之等待唤醒机制
查看>>
Shell中整数比較
查看>>
IOS应用内购(一)内购的种类
查看>>