Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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:
Özel komutlar. Kullanıcıların diyagrama sağ tıklayarak çağırabileceği ve modeli değiştirebilecek bir komut oluşturabilirsiniz. Daha fazla bilgi için bkz . Nasıl yapılır: Kısayol Menüsüne Komut Ekleme.
Doğrulama. Modelin doğru durumda olduğunu doğrulayan kod yazabilirsiniz. Daha fazla bilgi için bkz . Domain-Specific Dilinde Doğrulama.
Varsayılan davranışı geçersiz kılma. DslDefinition.dsl'den oluşturulan kodun birçok yönünü değiştirebilirsiniz. Daha fazla bilgi için bkz. Oluşturulan Sınıfları Geçersiz Kılma ve Genişletme.
Metin Dönüştürme. Bir modele erişen ve bir metin dosyası oluşturan kod içeren metin şablonları yazabilirsiniz; örneğin program kodu oluşturabilirsiniz. Daha fazla bilgi için bkz. Domain-Specific Dilinden Kod Oluşturma.
Diğer Visual Studio uzantıları. Modelleri okuyan ve değiştiren ayrı VSIX uzantıları yazabilirsiniz. Daha fazla bilgi için bkz . Nasıl yapılır: Program Kodunda Dosyadan Model Açma
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.