其他分享
首页 > 其他分享> > CodeGo.net>如何在Visual Studio 2010中创建自定义工具来生成代码?

CodeGo.net>如何在Visual Studio 2010中创建自定义工具来生成代码?

作者:互联网

我只想生成一个具有来自数据库表的属性的类.

如果我有如下数据库表:

+-------------------+
| Id | Name         |
+----+--------------+
| 1  + foo          |
| 2  + hello.world  |
| 3  + null         |
+-------------------+

我想自动生成一个如下所示的类:

class MyTable {
  public static int Foo = 1;
  public static int HelloWorld = 1;
  // null was omitted for Id = 3
}

解决方法:

您可以使用T4转换来完成工作.使用“添加新项目”和“文本模板”.

T4语言是使用C#代码选通C#代码的一种方式.大多数文本直接解析为输出文件,并且可以在<#和#>内编写新代码.标签.该文件以包装的导入文件和using语句开头,因此一个非常简单的模板可能类似于:

   <#@ template debug="false" hostspecific="false" language="C#" #>
   <#@ import namespace="System.Data" #>
   <#@ import namespace="System.Data.SqlClient" #>
   <#@ assembly name="System.Data" #>

   namespace Some.Namespace
   {
       public class TestClass 
       {
    <# 

    using(var cnn = new SqlConnection(@"server=.\sqlexpress;Integrated Security=SSPI;Database=ApplicationManagement"))
    {
        cnn.Open();
        var cmd = new SqlCommand("SELECT TextKey, TextValue FROM TblBrandingKeyValues WHERE BrandingIdentifier = 'Default'", cnn);

        var reader = cmd.ExecuteReader();

        while (reader.Read())
        {
            var defaultText = reader.GetString(1);
            var name = reader.GetString(0);


    #>
    public string <#= name #> 
    {
        get { return "<#= defaultText #>"; } 
    }

    <#
        }
    }

     #>

    }
}

}
<#@输出扩展名=“.cs”#>

该模板将创建一个TestClass类,该类具有从数据库表TblBrandingKeyValues中检索的一组只读属性.

我会推荐这些T4 tutorials.

标签:visual-studio-2010,auto-generate,c,visual-studio
来源: https://codeday.me/bug/20191101/1984259.html