Xamarin Android将Java.Lang.Enum映射到C#枚举

安德鲁·伯内特-汤普森博士

在java中我有枚举

package com.acme.common;

// In java world
public enum FooEnum {
    AValue,
    AnotherValue
}

这在Java的整个代码中都使用过,例如

// In java world
public class Bar {
    void setFoo(FooEnum value) { 
       // ...  
    }
}

它被映射到C#中的一个类,该类继承Java.Lang.Enum,如下所示:

// Now in C# generated bindings 
// I want this to be a CLR Enum instead
public sealed partial class FooEnum : global::Java.Lang.Enum 
{ 
   // ... 
}   
// C# generated class uses Java.Lang.Enum type for getter and setter
// But I want FooEnum to be clr enum
public partial class Bar 
{        
   public FooEnum Foo { get; set; }
} 

我想使用EnumFields.xml将此映射到C#枚举但是不知道如何。

我用Google搜索Xamarin Android EnumFields并发现了一些结果,并且已经阅读了Xamarin Android绑定walthrough,但是仍然不确定如何执行此操作...

马特

首先,您在EnumFields.xml中定义了枚举,它们将如何出现在C#中

<mapping jni-class="com/acme/common/FooEnum " clr-enum-type="Com.Acme.Common.FooEnum">
    <field jni-name="AValue" clr-name="AValue" value="0" />
    <field jni-name="AnotherValue" clr-name="AnotherValue" value="1" />
</mapping>

然后,需要为所有消耗此Enum的方法编辑EnumMethods.xml。

<mapping jni-class="com/skobbler/ngx/map/realreach/SKRealReachSettings">
    <method jni-name="getFoo" parameter="return" clr-enum-type="Com.Acme.Common.FooEnum" />
    <method jni-name="setFoo" parameter="measurementUnit" clr-enum-type="Com.Acme.Common.FooEnum" />
</mapping>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将dropDownlist映射到C#中的枚举?

Xamarin.Android java.lang.ClassNotFoundException

Xamarin:将Java的EventListener转换为Android的C#

MapStruct:如何将属性从“ java.lang.Object映射到” java.lang.String”

Xamarin Android 6.0 Java.Lang.NoSuchMethodError与View.SetText

Xamarin android 部署上的 Java,Lang.OutOfMemoryError

Android(xamarin)中的DownloadManager抛出Java.Lang.IllegalArgumentException

Xamarin中的Java.Lang.NullPointerException

Xamarin Studio中的Java Lang UnsupportedClassVersion错误

使用Xamarin完成Java.Lang.StackOverflowError

Xamarin Android java.lang.InstantiationException:java.lang.Class没有零参数构造函数

将枚举映射到类型

将C#对象映射到BsonDocument

将graphql枚举映射到kotlin枚举

将枚举映射到“子枚举”

本机 Java Android 到 Xamarin C#

Xamarin.Android 中的 java.lang.ClassNotFoundException 绑定 java 库

Xamarin-部署后立即出现Java.Lang.RuntimeException

java.lang.IllegalArgumentException:服务未注册 - Xamarin BoundServiceDemo 崩溃

Xamarin Forms 中 GoogleClientManager 注销的 Java Lang 非法状态异常

如何使用TypeConverter通过JNA将C整数映射到Java枚举?

在Xamarin android中实现admob会引发Java.Lang.RuntimeException

Xamarin.Forms.Android:java.lang.IllegalStateException:片段没有视图

Xamarin Android:Java.Lang.ClassNotFoundException启动第二个Activity

Xamarin Android和AIDL:Java.Lang.IllegalStateException:'Bundle的错误魔术数字

将枚举映射到json属性

将枚举元素映射到类型

使用 automapper 将 long 映射到枚举

Spark 在将 rdd 与 java 语音匹配库映射到 null 值时抛出 java.lang.NullPointerException