代码生成就用Razor模板

本文介绍如何利用Razor模板简化代码生成过程,提高编码效率,并提供了一个简单的前端Xaml代码生成模板实例。

程序员都自己写过代码生成器吧?说实在的,我没用过商业化的代码生成器,有那学习怎么使用的功夫自己也写出来一个了。代码生成工具用来避免一些重复劳动,还是很爽的。以前写过好几个,实现的都很蹩脚,主要是模板写起来费事又难看。这次选用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解析模板,异常简单,项目地址 http://razorengine.codeplex.com/。只需引用2个dll,然后调用如下语句:

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

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

结论:

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值