自己动手做个代码生成器(一)

2018-11-19  本文已影响0人  singba

本文以VS中的文本模板,介绍一种代码生成方法

新增文本模板文件Entity.tt(在项模板中选择"文本模板")

image.png
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ output extension=".txt"  #>

写一段代码试试

<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ output extension=".cs"  #>
namespace TextCode
{
    public class TestClass
    { 

    }
}

保存看看,是不是生成了代码,对,只是拷贝了一份,并没有什么魔法

再修改一下代码Entity.tt

<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ output extension=".cs"  #>
namespace TextCode
{
    public class TestClass
    {       
<#for(int i=0;i<10;i++){#>
        public string Field<#=i+1#> {get;set;}
<#}#>
    }
}

再看一下生成的代码 Entity.cs

namespace TextCode
{
    public class TestClass
    {       
        public string Field1 {get;set;}
        public string Field2 {get;set;}
        public string Field3 {get;set;}
        public string Field4 {get;set;}
        public string Field5 {get;set;}
        public string Field6 {get;set;}
        public string Field7 {get;set;}
        public string Field8 {get;set;}
        public string Field9 {get;set;}
        public string Field10 {get;set;}
    }
}

再往上看看代码,我们可以看出

好了,先开个头,你有兴趣试试吗?

上一篇下一篇

猜你喜欢

热点阅读