Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Il existe des cas où les bibliothèques Android Java utilisent des constantes entières pour représenter les états passés aux propriétés ou méthodes des bibliothèques. Pour les liaisons largement distribuées, il peut être utile de lier ces constantes entières à des énumérations en C# pour fournir une API plus agréable pour les consommateurs.
Pour les liaisons internes ou à faible utilisation, il n’est généralement pas utile de les configurer, car les consommateurs peuvent simplement utiliser les constantes liées au lieu d’une énumération.
Pour faciliter ce mappage, deux fichiers sont ajoutés aux projets de liaison par le modèle de projet par défaut :
EnumFields.xml - Ce fichier définit le mappage entre les constantes entières Java et une énumération C#
EnumMethods.xml - Ce fichier définit les méthodes/propriétés qui prennent actuellement un
intparamètre de méthode ou dont leinttype de retour doit être modifié pour utiliser une énumération à la place.
Définition d’une énumération à l’aide du fichier EnumFields.xml
Le fichier EnumFields.xml contient le mappage entre les constantes Java int et C# enums. Prenons l’exemple suivant d’énumération C# créée pour un ensemble de int constantes :
<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>
Ici, nous avons pris la classe SKRealReachSettings Java et défini une énumération C# appelée SKMeasurementUnit dans l’espace de noms Skobbler.Ngx.Map.RealReach. Les field entrées définissent le nom de la constante Java (exemple UNIT_SECOND), le nom de l’entrée d’énumération (exemple Second) et la valeur entière représentée par les deux entités (exemple 0).
Définition des méthodes getter/setter à l’aide de EnumMethods.xml
Le fichier EnumMethods.xml permet de modifier les paramètres de méthode et les types de retour des constantes Java int en C# enums. En d’autres termes, il mappe la lecture et l’écriture des énumérations C# (définies dans le fichier EnumFields.xml) à des constantes int et méthodes get Java set.
Étant donné l’énumération SKRealReachSettings définie ci-dessus, le fichier EnumMethods.xml suivant définit le getter/setter pour cette énumération :
<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>
La première method ligne mappe la valeur de retour de la méthode Java getMeasurementUnit à l’énumération SKMeasurementUnit . La deuxième method ligne mappe le premier paramètre de l’énumération setMeasurementUnit au même enum.
Avec toutes ces modifications en place, vous pouvez utiliser le code suivant dans .NET pour Android pour définir le MeasurementUnit :
realReachSettings.MeasurementUnit = SKMeasurementUnit.Second;