ひっそりと生きるプログラマのブログ

日頃気になった事なりを書き留めるブログです。関心ごとは多くもう少し更新頻度を上げたいところです。

t4テンプレート

少しだけ、t4テンプレートで、
テンプレートファイルと同フォルダにあるリソースファイルを読み、
そのキー名を列挙型で出力する雑なサンプル。

眠いのでここらまで。。。orz

<#@ template debug="true" hostspecific="true" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="System.Xml" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Xml" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ output extension=".cs" #>
namespace Sample
{
    public enum ResxEnums
    {
<# 
	var directory = new FileInfo(this.Host.TemplateFile).Directory;
	var	items = new List<string>();
	foreach(var file in directory.GetFiles("*.resx"))
	{
		if(file.FullName.Count(m => '.' == m) != 1) continue;
        var document = new XmlDocument();
		document.Load(file.FullName);
		foreach(XmlNode node in document.SelectNodes("/root/data"))
		{
			items.Add(node.Attributes["name"].InnerText);
		}
    }
#>
<#
	for(int index = 0;index < items.Count;index++)
	{
		if(index != 0)
		{
#>
		<#= "," #>
<#
		}
#>
		<#= items[index] #>
<#
	}
#>
	}
}