如何在Visual Studio 2010中创建用于生成代码的自定义工具

本文关键字:代码 工具 自定义 用于 创建 Visual Studio 2010 | 更新日期: 2023-09-27 18:29:04

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

如果我有一个数据库表,如下所示:

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

我想自动生成一个class,如下所示:

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

如何在Visual Studio 2010中创建用于生成代码的自定义工具

您可以使用T4转换来完成这项工作。使用"添加新项目"answers"文本模板"。

T4语言是使用C#代码生成C#代码的一种方式。大多数文本都被直接解析到输出文件中,并且可以在<##>标记中编写新代码。该文件从包装导入和使用语句开始,因此一个非常简单的模板可以是:

   <#@ 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教程。

使用T4模板。我用这种方式生成了很多类。

如果您想创建自己的自定义工具,最好查看System.CodeDom命名空间其中包含生成代码所需的所有内容。当然,您必须对生成类的算法进行编码。

更多信息请访问以下链接:

http://msdn.microsoft.com/en-us/library/ms404245.aspx

无论如何,请记住,.NET已经提供了许多"内置"工具/命名空间,它们可以完成完全相同的工作(例如使用实体框架)