Aracılığıyla paylaş


Hesaplanan ve özel depolama özellikleri

Etki alanına özgü dil (dsl) tüm etki alanı özellikleri, Diyagram ve kendi dil explorer kullanıcıya görüntülenen ve program kodu tarafından erişilebilir.Ancak, değerlerine depolanan bir yolla özellikleri farklıdır.

Tür etki alanı özellikleri

dsl tanımında ayarlayabilirsiniz tür aşağıdaki tabloda listelendiği gibi bir etki alanı özelliği:

Etki alanı özelliği türü

Description

Standart (varsayılan)

Kaydedilen bir etki alanı özellik saklamak ve dosya için seri hale getirilmiş.

Hesaplanan

Depoda kaydedilmez, ancak diğer değerleri hesaplanır salt okunur etki alanı özellik.

Örneğin, Person.Age tarafından hesaplanan Person.BirthDate.

Hesaplama yapan kodunu girmeniz gerekir.Genellikle, diğer etki alanı özellikleri değerini hesaplayın.Ancak, dış kaynaklar da kullanabilirsiniz.

Özel depolama

Doğrudan deposunda kaydedilmez, ancak hem get hem de set olabilir domain özelliği.

Get ve set değeri yöntemleri sağlamak zorunda.

For example, Person.FullAddress could be stored in Person.StreetAddress, Person.City, and Person.PostalCode.

Örneğin alın ve bir veritabanından değerleri ayarlamak dış kaynaklara da erişebilir.

Kodunuzu deposunda değerleri girmemelisiniz, Store.InUndoRedoOrRollback doğrudur.Bkz: hareketleri ve özel ayarlayıcıları.

Hesaplanan veya özel depolama özelliği için kod sağlama

Bir etki alanı özellik türünü hesaplanan ya da özel depolama ayarlarsanız, erişim yöntemleri vermek zorundasınız.Çözümünüzü oluştururken bir hata raporu ne gerekli olduğunu bildirir.

Hesaplanan veya özel depolama özelliği tanımlamak için

  1. DslDefinition.dsl Diyagram veya, etki alanı özellik seçin dsl Explorer.

  2. İçinde özelliklerini penceresinde, tür alanını hesaplanan veya Özel depolama.

    Siz de ayarladığınızdan emin olun, türü istedikleriniz için.

  3. Tıklatın Dönüştürme tüm şablonları araç Solution Explorer.

  4. Yapı menüsünde, Çözümü Derle'yi tıklatın.

    Aşağıdaki hata iletisini alırsınız: "YourClass bir tanımı için Get içermiyorYourProperty."

  5. Hata iletisini çift tıklatın.

    Dsl\GeneratedCode\DomainClasses.cs veya DomainRelationships.cs açar.Vurgulanan yöntem çağrısı, bir yorum uygulaması için Get sağlamanızı isterYourProperty().

    [!NOT]

    Bu dosya DslDefinition.dsl oluşturulur.Bu dosyayı düzenlerseniz, değişikliklerinizi'ı bir sonraki açışınızda kaybolacak Dönüştürme tüm şablonları.Bunun yerine, ayrı bir dosyada gerekli bir yöntem ekleyin.

  6. Oluşturmak veya bir sınıf dosyasını ayrı bir klasöre, örneğin CustomCode\YourDomainClass. cs.

    Ad alanı oluşturulan kodda olduğu gibi aynı olduğundan emin olun.

  7. Kısmi bir uygulama etki alanı sınıfının sınıf dosyasında yazma.Eksik bir tanım sınıfta yaz Al aşağıdaki örnektekine benzer bir yöntem:

    namespace Company.FamilyTree
    {  public partial class Person
       {  int GetAgeValue()
          { return System.DateTime.Today.Year - this.BirthYear; }
    }  }
    
  8. Ayarlarsanız tür için Özel depolama, ayrıca vermeniz gerekecek bir Set yöntemi.Örne?in:

          void SetAgeValue(int value)
          { if (!Store.InUndoRedoOrRollback)
              this.BirthYear = 
                  System.DateTime.Today.Year - value; }
    

    Kodunuzu deposunda değerleri girmemelisiniz, Store.InUndoRedoOrRollback doğrudur.Bkz: hareketleri ve özel ayarlayıcıları.

  9. Oluşturup çözüm çalıştırın.

  10. Özellik sınayın.Siz deneyin emin olun geri ve yeniden.

Hareketleri ve özel ayarlayıcılar

Yöntemi genellikle etkin bir işlem içinde çağrıldığı özel depolama özelliği ayarlama yöntemi, bir hareket açmak zorunda değildir.

Ancak, Set yöntemi kullanıcı Geri Al veya Yinele çalıştırır veya bir hareketi geri alınmakta olan çağrılabilen.Zaman InUndoRedoOrRollback ayarlama yönteminiz davranır gibi geçerlidir:

  • Onu diğer etki alanı özellikleri değerleri atama gibi deposunda değişiklik.Geri alma Yöneticisi, değerlerine ayarlar.

  • Ancak, veritabanı veya dosya içeriğini veya mağaza dışında kalan nesneler gibi herhangi bir dış kaynaklara güncelleştirmeniz gerekir.Bunlar synchronism değerlerle deposunda tutulur emin yapar.

Örne?in:

void SetAgeValue(int value)
{ 
  // If we are in Undo, no changes to Store objects:
  if (!this.Store.InUndoRedoOrRollback)
  { 
    this.BirthYear = System.DateTime.Today.Year - value; 
  }
  // But always update external objects:
  System.IO.File.WriteAllText(AgeFile, value);
}

İşlemler hakkında daha fazla bilgi için bkz. Gezinme ve Program kodunda bir modeli güncelleştiriliyor.

Ayrıca bkz.

Başvuru

Etki alanı özelliklerini

Kavramlar

Gezinme ve Program kodunda bir modeli güncelleştiriliyor

Nasıl bir etki alanına özgü dili tanımla