有的时候,我们用定义有Enum类型,一种植比较灵活的做法是用T4模板去读取指定的XML,然后因NODE生成我们想到的Enum类型。首先看,我们出诸如此类一个XML文件:

   1:  <?xml version="1.0" encoding="utf-8" ?>

   2:  <Root>

   3:    <Element Name="Red"/>

   4:    <Element Name="Blue" />

   5:  </Root>

         然后我们编辑扩展名也TT的模板文件在VisualStudio中:

   1:  <#@ template language="C#"  hostspecific="True"#>

   2:  <#@ assembly name="System.Core" #>

   3:  <#@ assembly name="System.Xml" #>

   4:  <#@ import namespace="System.Xml" #>

   5:  <#@ import namespace="System.Collections.Generic" #>

   6:  <#@ import namespace="System.IO" #>

   7:  using System;

   8:   

   9:  namespace Examples

  10:  {

  11:      public class ExampleClass

  12:      {

  13:          #region Enums

  14:   

  15:          public enum MyExampleEnum

  16:          {

  17:  <#

  18:      foreach (string name in this.GetNames())   

  19:      {

  20:  #>

  21:              <#= name #>,

  22:  <# 

  23:      }

  24:          #>

  25:          }

  26:          

  27:          #endregion

  28:      }

  29:  }

  30:  <#+

  31:      public List<string> GetNames()

  32:      {

  33:          List<string> result = new List<string>(); 

  34:          XmlDocument doc = new XmlDocument();

  35:          string absolutePath = Host.ResolvePath("MyEnum.xml");                

  36:          doc.Load(absolutePath);

  37:          foreach (XmlNode node in doc.SelectNodes("/Root/Element"))

  38:          {

  39:              result.Add(node.Attributes["Name"].InnerText);

  40:          }

  41:          return result;

  42:      }

  43:  #>

最后执行这个模板文件,将会见于当前目录下,生成如下的CODE文件:

   1:  using System;

   2:   

   3:  namespace Examples

   4:  {

   5:      public class ExampleClass

   6:      {

   7:          #region Enums

   8:   

   9:          public enum MyExampleEnum

  10:          {

  11:              Red,

  12:              Blue,

  13:          }

  14:          

  15:          #endregion

  16:      }

  17:  }

举凡勿是十分粗略,当然你可编写更加复杂的沙盘文件,生成你想到CODE。

要是您切莫了解T4模板,你得参照MSDN,
如你早就了解,那么您闹或针对以下文章感兴趣:

T4 (Text Template Transformation
Toolkit)实现简单实体代码生成

Linq to Entity 的T4
模板生成代码

作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意要保留这个段子声明,且在文章页面明显位置被起原文连接,否则保留追究法律责任的权。
该文章吧又发布以自家的独自博客中-Petter Liu
Blog。

相关文章

网站地图xml地图