Aracılığıyla paylaş


Etki alanına özgü bir dili özelleştirmek için kod yazma

Bu bölümde, etki alanına özgü bir dilde (DSL) modele erişmek, modeli değiştirmek veya oluşturmak için özel kodun nasıl kullanılacağı gösterilir.

DSL için kod yazma bağlamı

DSL ile çalışan kod yazabileceğiniz çeşitli bağlamlar vardır:

In-Memory Mağazası

DslDefinition.dsl dosyasında tanımladığınız sınıfların örnekleri In-Memory Store (IMS) veya Store adlı bir veri yapısında tutulur. DSL'de tanımlanan sınıflar her zaman bir Depo'yu parametre olarak kabul eder. Örneğin, DSL'niz adlı Examplebir sınıf tanımlıyorsa:

Example element = new Example (theStore);

Nesneleri sıradan nesneler yerine Mağaza'da tutmak çeşitli avantajlar sağlar.

  • İşlemler. Bir dizi ilgili değişikliği bir işlem halinde gruplandırabilirsiniz:

    using (Transaction t = store.TransactionManager.BeginTransaction("updates"))
    {
      // make several changes to Store elements here
      t.Commit();
    }
    

    Değişiklikler sırasında bir özel durum oluşursa, son Commit() işlem gerçekleştirilmezse Mağaza önceki durumuna sıfırlanır. Bu yaklaşım hataların modeli tutarsız bir durumda bırakmadığından emin olmanıza yardımcı olur. Daha fazla bilgi için bkz. Program Kodunda ModelDe Gezinme ve Güncelleştirme.

  • İkili ilişkiler. İki sınıf arasında bir ilişki tanımlarsanız, her iki uçta yer alan örneklerin diğer uca geçen bir özelliği vardır. İki uç her zaman senkronize edilir. Örneğin, Ebeveynler ve Çocuklar adlı rollerle bir ebeveynlik ilişkisi tanımlarsanız şunları yazabilirsiniz:

    John.Children.Add(Mary)

    Aşağıdaki ifadelerin her ikisi de artık doğrudur:

    John.Children.Contains(Mary)

    Mary.Parents.Contains(John)

    Şunu yazarak da aynı etkiyi elde edebilirsiniz:

    Mary.Parents.Add(John)

    Daha fazla bilgi için bkz. Program Kodunda ModelDe Gezinme ve Güncelleştirme.

  • Kurallar ve Olaylar. Belirtilen değişiklikler yapıldığında çalışan kuralları tanımlayabilirsiniz. Kurallar, örneğin diyagramdaki şekilleri sundukları model öğeleriyle güncel tutmak için kullanılır. Daha fazla bilgi için bkz. Değişiklikleri Yanıtlama ve Yayma.

  • Serileştirme. Store, içerdiği nesneleri bir dosyaya seri hale getirmek için standart bir yol sağlar. Serileştirme ve deserileştirme işlemlerini özelleştirebilirsiniz. Daha fazla bilgi için bkz. Dosya Depolamayı ve XML Serileştirmeyi Özelleştirme.