Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Existem casos em que as bibliotecas Java Android usam constantes inteiras para representar estados que são passados para propriedades ou métodos das bibliotecas. Para ligações amplamente distribuídas, pode ser útil associar estas constantes inteiras a enums em C# para fornecer uma API mais interessante para os consumidores.
Para associações internas ou de baixo uso, normalmente não vale o esforço configurá-las, porque os utilizadores podem simplesmente usar as constantes de ligação em vez de usar uma enumeração.
Para facilitar este mapeamento, dois ficheiros são adicionados aos projetos de ligação pelo modelo padrão do projeto:
EnumFields.xml - Este ficheiro define o mapeamento entre constantes inteiras Java e uma enumeração em C#
EnumMethods.xml - Este ficheiro define quais os métodos/propriedades que atualmente ocupam um
intparâmetro de método ou têm uminttipo de retorno devem ser modificados para usar uma enumeração em vez disso.
Definir um enum usando EnumFields.xml
O ficheiroEnumFields.xml contém o mapeamento entre constantes Java int e C# enums. Vamos considerar o exemplo seguinte de um enum em C# que está a ser criado para um conjunto 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>
Aqui pegámos na classe SKRealReachSettings Java e definimos um enum em C# chamado SKMeasurementUnit no namespace Skobbler.Ngx.Map.RealReach. As field entradas definem o nome da constante Java (exemplo UNIT_SECOND), o nome da entrada enum (exemplo Second), e o valor inteiro representado por ambas as entidades (exemplo 0).
Definição de métodos de getter/setter usando EnumMethods.xml
O ficheiro EnumMethods.xml permite alterar parâmetros de método e tipos de retorno de constantes Java int para C# enums. Por outras palavras, mapeia a leitura e a escrita dos enums C# (definidos no ficheiro EnumFields.xml) para as constantes e métodos intgetset do Java.
Dado o SKRealReachSettings enum definido acima, o seguinte ficheiro deEnumMethods.xml definiria o getter/setter para este enum:
<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>
A primeira method linha mapeia o valor de retorno do método Java getMeasurementUnit para o SKMeasurementUnit enum. A segunda method linha mapeia o primeiro parâmetro de setMeasurementUnit para o mesmo enum.
Com todas estas alterações implementadas, pode usar o seguinte código em .NET para Android para definir o MeasurementUnit:
realReachSettings.MeasurementUnit = SKMeasurementUnit.Second;