Im folgenden Beispiel sehen Sie wie man eine Manager-Klasse programmiert:
In der Basisklasse PARole ist folgende Methode deklariert:
public static T GetServiceInstance<T>(ACComponent requester, string acIdentifier, CreationBehaviour creationBehaviour = CreationBehaviour.Default) where T : IACComponent
Diese statisch Hilfsmethode gibt die Instanz einer beliebigen Manager-Klasse zurück. Sie sucht nach der Instanz in folgender Reihenfolge:
- Unterhalb der anfordernden Komponente selbst (Kind). Falls Sie dort nicht gefunden wurde, dann wird sie
- unterhalb "\Root\LocalServiceObjects" gesucht. Falls Sie dort nicht gefunden wurde, dann wird sie
- im Anwendungsprojekt "\Services" gesucht (Netzwerkinstanz)
Im Beispielcode oben wurden zwei Methoden (A) und (B) deklariert, welche die GetServiceInstance<T>-Methode verwenden. In Ihrer Manager-Klasse, die Sie programmieren möchten, müssen Sie sich jedoch entscheiden, ob sie lokal (A) oder als Netzwerkdienst (B) verfügbar sein soll. Beides wie im Beispiel oben ist nicht möglich.
Die anderen beiden Methoden (C) und (D) verwenden GetServiceInstance() und erstellen einen intelligenten Zeiger ACRef<T>.
Die Methode "SumLines()" (E) ist für die lokale Verwendung vorgesehen. Bitte beachten Sie hier, dass alle notwendigen Daten als Parameter übergeben werden müssen, weil Manager-Klassen zustandslos sein müssen.
Die Methode "SumLinesByID" (F) ist für die netzwerkfähige Verwendung vorgesehen.
Nun schauen wir uns an, wie diese "Manager-Klasse" verwendet wird:
Falls Sie Ihre Manager-Klasse lokal verwenden möchten, dann sollten Sie es wie im Beispiel unter Punkt (A) und (C) programmieren. Zur Verwendung als netzwerkfähige Instanz programmieren Sie es wie unter Punkt (B) und (D).
Vergessen Sie nicht den intelligenten Zeiger in der Deinitialisierungsphase zu trennen (E).