Für jede Eigenschaft einer Klasse erzeugt das iPlus-Framework eine Instanz der generischen Klasse ACProperty<T> oder einer Ihrer Ableitungen. Dies betrifft sowohl Klassen die als C#-Code in einer Assembly vorliegen als auch Klassen die Sie virtuell in der iPlus-Entwicklungsumgebung angelegt haben. Siehe folgendes UML-Diagramm:
Die Klasse ACProperty<T> besitzt eine Eigenschaft ValueT, die den eigentlichen Wert kapselt. Sie können damit den Wert lesen oder setzen. Als normale C#-Property definierte Eigenschaften werden im Hintergrund automatisch die entsprechenden Setter- oder Getter-Methoden aufgerufen.
Um eine Referenz auf eine ACProperty<T> zu erhalten, rufen Sie die Methode IACPropertyBase GetProperty(string acName) auf und übergeben den Namen der Eigenschaft. Alle Eigenschaften einer Klasse werden in der Eigenschaft List<IACPropertyBase> ACPropertyList einer ACComponent bereitgestellt. Sie können daher auch auf diese Liste zugreifen und per LINQ sich ihre Eigenschaft selbst heraussuchen.
Das Interface IACPropertyBase ermöglicht einen Typ-Neutralen Zugriff auf eine Eigenschaft, wenn der Datentyp für den Anwendungsprogrammierer nicht bekannt ist. Über die Eigenschaft object Value können Sie ebenso auf den Wert per Boxing/Unboxing zugreifen. Wir empfehlen Ihnen jedoch immer mit der generischen Variante zu arbeiten, weil es dann keine Typ-Laufzeitfehler geben kann.
Casten Sie deswegen die IACPropertyBase in eine IACContainerT<T>-Referenz und arbeiten immer mit dieser!
Der Hintergrund weshalb Sie eher mit einer IACContainerT<T>-Referenz arbeiten sollen ist, weil sich aufgrund der Netzwerk-Abstraktionsfähigkeit des iPlus-Frameworks unterschiedliche Ableitungen der ACProperty<T>-Klasse verbergen können und Sie bei der Programmierung damit nicht belästigt werden sollen (siehe Diagramm oben).
Auf netzwerkfähige oder lokale Eigenschaften wird in den nachfolgenden Unterkapiteln näher eingegangen.