Tags: , , | Categories: asp.net, T4 Templates Posted by Admin on 9/13/2010 11:11 PM | Comments (0)

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

Kahve ısmarlayın

Aşağıdaki kahve simgesine tıklayarak bana paypal üzerinden kahve ısmarlayabilirsiniz. Kahveye olan düşkünlüğü ile bilinen birisi olarak büyük bir zevkle içeceğimden emin olabilirsiniz.


Add comment




biuquote
Loading