• 代码生成就用Razor模板


    程序员都自己写过代码生成器吧?说实在的,我没用过商业化的代码生成器,有那学习怎么使用的功夫自己也写出来一个了。代码生成工具用来避免一些重复劳动,还是很爽的。以前写过好几个,实现的都很蹩脚,主要是模板写起来费事又难看。这次选用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模板写一个简单的自用型代码生成器,变成了一件简单有趣的事情。

  • 相关阅读:
    PyCharm专业版永久激活步骤详解(只是自己记一下以防后面需要)
    PV EV AC BAC EAC ETC等计算公式
    Linux服务器下安装Jmeter
    Python接口自动化测试运行成功但没有生成测试报告的总结
    Linux命令
    Python3+selenium环境配置
    selenium窗口切换问题
    Selenium安装问题
    Python爬虫功能(爬取网页图片)
    ASICC码对照表
  • 原文地址:https://www.cnblogs.com/hjblog/p/2769660.html
Copyright © 2020-2023  润新知