Attribute, die nur intern geschrieben werden kann


Es ist manchmal notwendig, um Attribute zu ermöglichen, die das Objekt selbst schreibbar sein schreibgeschützt sind
Ich mache dieses
1) erstellen Sie eine Eigenschaft, die InternalChangeCount auf Ihre Basisklasse in die Eigenschaftswerte stellen sicher, dass Fett kennt, ist es ein Delphi-Attribut mit einem Feld für Lesezugriff und kein Schreibzugriff
2) erstellen Sie die folgenden privaten Methoden
Prozedur TBusinessClassesRoot.StartInternalChange;
beginnen
Inc(fInternalChangeCount);
Ende;
Prozedur TBusinessClassesRoot.EndInternalChange;
beginnen
Wenn InternalChangeCount = 0 then
Auslösen von Exception.Create ('EndInternalChange ohne StartInternalChange');
Dec(fInternalChangeCount);
Ende;
Funktion TBusinessClassesRoot.IsInternalChange: Boolean;
beginnen
Ergebnis: = fInternalChangeCount > 0;
Ende;
3) überschreiben Sie die folgenden
Prozedur TBusinessClassesRoot.AfterConstruction;
beginnen
fInternalChangeCount: = 0;
Ende;
{Ich habe nie mit dieser selbst die Mühe}
Destruktor TBusinessClassesRoot.Destroy;
beginnen
Wenn InternalChangeCount > 0 dann
Auslösen von Exception.Create ('StartInternalChange ohne EndInternalChange');
erbte;
Ende;

Alle Klassen haben nun die Möglichkeit, dies zu tun
StartInternalChange;
versuchen Sie
SomeReadOnlyAttribute: = 32;
Schließlich
EndInternalChange;
Ende;
In den abgeleiteten Klassen würden Sie überschreiben ReceiveQueryFromOwned und führen Sie dann das...
beginnen
Ergebnis: = geerbte ReceiveQueryFromOwned (Etc, Etc, etc.);
Wenn dann führen
beginnen
Wenn OriginalEvent = BqMayModify then
Wenn IsInternalChange dann
Ergebnis: = True
sonst
beginnen
Wenn Urheber = M_SomeReadOnlyAttribute then
Ergebnis: = False;
Ende;
Ende;
Ende;









Attribute, die nur intern geschrieben werden kann


Attribute, die nur intern geschrieben werden kann : Mehreren tausend Tipps, um Ihr Leben einfacher machen.


Es ist manchmal notwendig, um Attribute zu ermöglichen, die das Objekt selbst schreibbar sein schreibgeschützt sind
Ich mache dieses
1) erstellen Sie eine Eigenschaft, die InternalChangeCount auf Ihre Basisklasse in die Eigenschaftswerte stellen sicher, dass Fett kennt, ist es ein Delphi-Attribut mit einem Feld für Lesezugriff und kein Schreibzugriff
2) erstellen Sie die folgenden privaten Methoden
Prozedur TBusinessClassesRoot.StartInternalChange;
beginnen
Inc(fInternalChangeCount);
Ende;
Prozedur TBusinessClassesRoot.EndInternalChange;
beginnen
Wenn InternalChangeCount = 0 then
Auslösen von Exception.Create ('EndInternalChange ohne StartInternalChange');
Dec(fInternalChangeCount);
Ende;
Funktion TBusinessClassesRoot.IsInternalChange: Boolean;
beginnen
Ergebnis: = fInternalChangeCount > 0;
Ende;
3) überschreiben Sie die folgenden
Prozedur TBusinessClassesRoot.AfterConstruction;
beginnen
fInternalChangeCount: = 0;
Ende;
{Ich habe nie mit dieser selbst die Mühe}
Destruktor TBusinessClassesRoot.Destroy;
beginnen
Wenn InternalChangeCount > 0 dann
Auslösen von Exception.Create ('StartInternalChange ohne EndInternalChange');
erbte;
Ende;

Alle Klassen haben nun die Möglichkeit, dies zu tun
StartInternalChange;
versuchen Sie
SomeReadOnlyAttribute: = 32;
Schließlich
EndInternalChange;
Ende;
In den abgeleiteten Klassen würden Sie überschreiben ReceiveQueryFromOwned und führen Sie dann das...
beginnen
Ergebnis: = geerbte ReceiveQueryFromOwned (Etc, Etc, etc.);
Wenn dann führen
beginnen
Wenn OriginalEvent = BqMayModify then
Wenn IsInternalChange dann
Ergebnis: = True
sonst
beginnen
Wenn Urheber = M_SomeReadOnlyAttribute then
Ergebnis: = False;
Ende;
Ende;
Ende;


Attribute, die nur intern geschrieben werden kann

Attribute, die nur intern geschrieben werden kann : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Attribute, die nur intern geschrieben werden kann
Wiezutun
Freunden empfehlen
  • gplus
  • pinterest

Kommentar

Einen Kommentar hinterlassen

Wertung