Bu makale T4 Templates’in nasıl kullanabileceğine dair bilgi içerir. Bir sonraki yazıda ise Dynamic Data ile T4 Templates’ün birlikte nasıl kullanabileceğine dair bir şeyler yazmayı planlıyorum. Bu yüzden bu yazının bazı bölümlerde Dynamic Data’dan bahsediyor olacağım.
Bilidindiği üzere T4 Templates çok güçlü bir kod üretici olarak Visual Studio’daki yerini almış bulunmaktadır(Dynamic Data kod üretici değildir.). Visual Studio 2005 kullanıyorsanız DSL Tools’un bilgisayarınızda yüklü olması gerekiyor. Bunun yanında intellisense özelliğini aktif etmek ve kodları renkli görüntüleyebilmek için T4 Editor ü kurabilirsiniz.
T4 templates ile çok farklı kod oluşturma işlemleri gerçekleştirilebilir. Şuan bir çok gerçek projede kullanıyor. Örnek olması amacıyla Yeni Web Site oluşturduktan sonra projeye BasitSablon.tt adında yeni bir Text Template ekleyelim.

Bu işlemin ardından OrnekSablon.tt dosyasını açtığımızda karşımızdaki kod yığını aşağıdaki gibidir. Varsayılan olarak txt uzantılı bir dosya oluşturacaktır ve oluşturulan dosyanın adı OrnekSablon.txt gibi olacaktır.
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".txt" #>
T4 şablonunu oluşturma işlemine gelecek olursak veritabanı erişimi için kullandığımız sıkca tekrar tekrar benzerini yazdığımız bir sınıf düşünülelim. Veritabanında varolan URUN tablosu karşılığında projemizde de Urun.cs adında bir sınıf olduğunu varsayalım. Şuanki işimiz T4 şablonu ile bu yada herhangi bir tablonun iş katmanı tarafındaki kodu otomatik oluşturalım. Senaryoya uygun olacak şekilde aşağıdaki T4 şablonunu yazdım.
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".cs" #>
using System;
using System.Collections.Generic;
using System.Linq;
// Veri erişimi için kullanacağımız sınıf olsun
public class <#= this.DegiskenAdi #>BLL
{
// Verileri tutan sınıf koleksiyonu olduğunu düşünelim
private static List<<#= this.DegiskenAdi #>> _<#= this.DegiskenAdi #>s;
// Constructor
static <#= this.DegiskenAdi #>BLL()
{
_<#= this.DegiskenAdi #>s = this.GetList();
}
// Tüm listeyi döndersin
public static List< <#= this.DegiskenAdi #>> Get <#= this.DegiskenAdi #>List(Guid id)
{
return _<#= this.DegiskenAdi #>s;
}
// Id'si gönderilen sınıfı listeden bularak döndersin
public static <#= this.DegiskenAdi #>Get <#= this.DegiskenAdi #>(Guid id)
{
return _ <#= this.DegiskenAdi #>s.Find(x => x.Id == id);
}
// Veritabanından aldığı kayıtları List tipinde geri döndersin
private static List< <#= this.DegiskenAdi #>> GetList()
{
return DB.Get<List<Urun>>("Select * From tbl <#= this.DegiskenAdi #>");
}
}
<#+
string DegiskenAdi = "Urun";
#>
Şablon üzerinde kaydetme işlemi yapıldığı anda kod dosyası üretilmiş olur. OrnekSablon.tt dosyasına sağ tıklanarak da üretme işlemi gerçekleştirilebilir. Ayrıca programsal olarak da tetiklenebilir.

Kod çıktısı aşağıdaki gibi olacaktır:

T4 şablonları yalnızca sınıf üretmek için kullanılmaz. Metin tabanlı her dosyayı oluşturmak için kullanabilir. Bu bazen bir Xml ayar dosyasıyken bazen kullanıcı arayüzündeki bir form olabilir.
Bir sonraki yazıda görüşmek üzere
57787f85-5c53-450f-9bc1-d81e39e26e87|0|.0