Erstellen von Enumerationen
Es gibt Fälle, in denen Java Android-Bibliotheken ganze Konstanten verwenden, um Zustände darzustellen, die an Eigenschaften oder Methoden der Bibliotheken übergeben werden. Bei weit verteilten Bindungen kann es nützlich sein, diese ganzzahligen Konstanten an Enumerationen in C# zu binden, um eine ansprechendere API für Verbraucher bereitzustellen.
Für interne oder niedrige Verwendungsbindungen lohnt es sich in der Regel nicht, diese einzurichten, da die Verbraucher einfach die gebundenen Konstanten anstelle einer Enumeration verwenden können.
Um diese Zuordnung zu vereinfachen, werden zwei Dateien der Standardprojektvorlage zum Binden von Projekten hinzugefügt:
EnumFields.xml – Diese Datei definiert die Zuordnung zwischen java-ganzzahligen Konstanten und einer C#-Aufzählung.
EnumMethods.xml – Diese Datei definiert, welche Methoden/Eigenschaften derzeit einen
int
Methodenparameter verwenden oder über einenint
Rückgabetyp verfügen, um stattdessen eine Enumeration zu verwenden.
Definieren einer Enumeration mithilfe von EnumFields.xml
Die Datei EnumFields.xml enthält die Zuordnung zwischen int
-Konstanten von Java und enums
von C#. Betrachten Sie das folgende Beispiel für eine C# Enumeration, die für mehrere int
-Konstanten erstellt wird:
<mapping jni-class="com/skobbler/ngx/map/realreach/SKRealReachSettings" clr-enum-type="Skobbler.Ngx.Map.RealReach.SKMeasurementUnit">
<field jni-name="UNIT_SECOND" clr-name="Second" value="0" />
<field jni-name="UNIT_METER" clr-name="Meter" value="1" />
<field jni-name="UNIT_MILIWATT_HOURS" clr-name="MilliwattHour" value="2" />
</mapping>
Hier wird die Java-Klasse SKRealReachSettings
verwendet, und es wird eine C# Enumeration mit dem Namen SKMeasurementUnit
im Namespace Skobbler.Ngx.Map.RealReach
definiert. Die field
-Einträge definieren den Namen der Java-Konstanten (z. B. UNIT_SECOND
), den Namen des Enumerationseintrags (z. B. Second
) und den ganzzahligen Wert, der von beiden Entitäten dargestellt wird (z. B. 0
).
Definieren von Getter-/Settermethoden mithilfe von EnumMethods.xml
Die Datei EnumMethods.xml ermöglicht die Änderung von Methodenparametern und Rückgabetypen von int
-Konstanten von Java in enums
von C#. Das heißt, das Lesen und Schreiben von C#-Enumerationen (definiert in der Datei EnumFields.xml) wird in Java int
-Konstanten sowie get
- und set
-Methoden zugeordnet.
Bei der oben definierten SKRealReachSettings
-Enumeration definiert die folgende EnumMethods.xml-Datei den Getter/Setter für diese Enumeration:
<mapping jni-class="com/skobbler/ngx/map/realreach/SKRealReachSettings">
<method jni-name="getMeasurementUnit" parameter="return" clr-enum-type="Skobbler.Ngx.Map.RealReach.SKMeasurementUnit" />
<method jni-name="setMeasurementUnit" parameter="measurementUnit" clr-enum-type="Skobbler.Ngx.Map.RealReach.SKMeasurementUnit" />
</mapping>
In der ersten method
-Zeile wird der Rückgabewert der Java-Methode getMeasurementUnit
der SKMeasurementUnit
-Enumeration zugeordnet. In der zweiten method
-Zeile wird der erste Parameter von setMeasurementUnit
derselben Enumeration zugeordnet.
Mit all diesen Änderungen können Sie den folgenden Code in .NET für Android verwenden, um folgendes MeasurementUnit
festzulegen:
realReachSettings.MeasurementUnit = SKMeasurementUnit.Second;