Obliczone i niestandardowe właściwości przechowywania
Wszystkie właściwości domeny w języku specyficzne dla domeny (DSL) mogą być wyświetlane użytkownikowi na diagramie i w Eksploratorze Twój język i są dostępne dla kodu programu.Jednakże właściwości różnią się w sposób, że ich wartości są przechowywane.
Rodzaje właściwości domeny
W definicji DSL można ustawić rodzaju właściwości domeny, jak wymieniono w poniższej tabeli:
Rodzaj właściwości domeny |
Opis |
---|---|
Standard (domyślnie) |
Właściwości domeny, który jest zapisany w przechowywania i szeregowany do pliku. |
Obliczona |
Właściwość domeny tylko do odczytu, która nie jest zapisany w magazynie, ale jest obliczana na podstawie innych wartości. Na przykład Person.Age można obliczyć z Person.BirthDate. Musisz podać kod, który wykonuje obliczenia.Zazwyczaj obliczyć wartości z innych właściwości domeny.Jednakże można również użyć zasobów zewnętrznych. |
Magazyn niestandardowych |
Właściwości domeny, które nie są zapisywane bezpośrednio w magazynie, ale może być zarówno get i set. Musisz podać metody get i ustawić jej wartość. For example, Person.FullAddress could be stored in Person.StreetAddress, Person.City, and Person.PostalCode. Można również uzyskać dostęp do zasobów zewnętrznych, na przykład uzyskać i ustawić wartości z bazy danych. Kodu nie należy ustawiać wartości w magazynie po Store.InUndoRedoOrRollback ma wartość true.Zobacz transakcji i niestandardowy ustawiające. |
Dostarczanie kodu dla właściwości magazynu obliczona lub niestandardowe
Rodzaj właściwości domeny ustawiona obliczona lub składowania niestandardowe, masz zapewniają metody dostępu.Podczas tworzenia rozwiązania raport o błędach będą stwierdzić, co jest wymagane.
Aby zdefiniować obliczona lub niestandardowe magazynu właściwości
W DslDefinition.dsl, wybierz właściwość domeny diagramu lub w DSL Explorer.
W Właściwości okno, ustawić rodzaju pola do obliczeniowe lub Magazyn niestandardowych.
Upewnij się, że mają także ustawić jego typu do potrzebnych funkcji.
Kliknij przycisk Transform wszystkie szablony na pasku narzędzi Solution Explorer.
Na budować menu, kliknij przycisk Roztwór budować.
Zostanie wyświetlony następujący komunikat o błędzie: "YourClass nie zawierają definicji GetYourProperty."
Kliknij dwukrotnie komunikat o błędzie.
Otwiera Dsl\GeneratedCode\DomainClasses.cs lub DomainRelationships.cs.Powyżej wywołanie metody wyróżnione komentarz monituje o podanie implementacja dla GetYourProperty().
[!UWAGA]
Ten plik jest generowany na podstawie DslDefinition.dsl.Jeśli edytujesz ten plik, zmiany zostaną utracone przy następnym kliknięciu przycisku Transform wszystkie szablony.Zamiast tego Dodaj wymagane metody w oddzielnym pliku.
Utwórz lub Otwórz plik klasy w oddzielnym folderze, na przykład CustomCode\YourDomainClass. cs.
Upewnij się, że obszar nazw jest taka sama, jak w generowanym kodzie.
Plik klasy zapisu częściowej realizacji klasy domeny.W tej klasie zapisu definicji dla brakujących uzyskać metody, podobny do poniższego:
namespace Company.FamilyTree { public partial class Person { int GetAgeValue() { return System.DateTime.Today.Year - this.BirthYear; } } }
Po ustawieniu rodzaju do Magazyn niestandardowych, będzie również dostarczyć Set metody.Na przykład:
void SetAgeValue(int value) { if (!Store.InUndoRedoOrRollback) this.BirthYear = System.DateTime.Today.Year - value; }
Kodu nie należy ustawiać wartości w magazynie po Store.InUndoRedoOrRollback ma wartość true.Zobacz transakcji i niestandardowy ustawiające.
Tworzenie i uruchamianie roztworu.
Badania właściwości.Upewnij się, że próby Cofnij i Ponów.
Transakcje i niestandardowy ustawiające
W metodzie zestaw właściwości niestandardowych składowania nie trzeba otworzyć transakcji, ponieważ metoda jest zazwyczaj nazywana wewnątrz aktywnej transakcji.
Metoda Set może jednak również nazwę użytkownika wywołuje Cofnij i ponów lub transakcji jest przywracana jest.Gdy InUndoRedoOrRollback ma wartość true, metodę zestaw powinny zachowywać się w następujący sposób:
Należy nie wprowadzać zmian w magazynie, takich jak przypisywanie wartości do właściwości innych domen.Menedżer cofania ustawi ich wartości.
Jednakże to należy zaktualizować zasobów zewnętrznych, takich jak bazy danych lub zawartość pliku lub obiekty poza magazynu.Będzie to upewnij się, że są one przechowywane w synchronism z wartościami w magazynie.
Na przykład:
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);
}
Aby uzyskać więcej informacji na temat transakcji, zobacz Nawigowanie i aktualizowanie modelu w kodzie programu.
Zobacz też
Informacje
Właściwości właściwości domeny