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

3

我想要生成一个带有属性的类,这些属性来自于一个数据库表。

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

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

我希望自动生成一个类,它应该像下面这样:

auto-generate

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

4

你可以使用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 #>"; } 
    }

    <#
        }
    }

     #>

    }
}

这个模板将创建一个名为TestClass的类,其中包含从数据库表TblBrandingKeyValues检索到的一组只读属性。

我建议您参考这些T4教程


0

如果你想创建自己的定制工具,最好查看包含生成代码所需的所有内容的System.CodeDom命名空间。当然,你需要编写生成类的算法。

更多信息请参见下面的链接:

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

请记住,.NET已经提供了许多“内置”工具/命名空间,可以完全完成相同的工作(例如使用Entity Framework)。

0
使用T4模板。我通过这种方式生成了许多类。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接