2016-04-28 15 views
2

Iは、例えば、これは、Javaでコード全体で使用される列挙にXamarinアンドロイドマッピングJava.Lang.Enum

package com.acme.common; 

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

を有します

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

これは、次のようにJava.Lang.Enumを継承C#でクラスにマッピングされてきている。

// 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#の列挙にこれをマッピングしたいと思いますの仕方。

私はあなたが彼らがどのように表示されるかEnumFields.xmlであなたの列挙型を定義している

答えて

5

まず... XamarinのAndroid EnumFieldsをGoogleで検索して、いくつかの結果を発見し、これを実行するのは非常に方法がわからXamarin Android Binding walthroughを読んで、まだしていません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> 

に次に、あなたが、私はそれが働いていたと思いますJoveのでは、この列挙型

<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> 
+0

を消費するすべてのメソッドのEnumMethods.xmlを編集する必要があります!そして、私はEnumの代わりにintを使うためにすべてのjavaコードを書き直そうとしていました。ありがとう! –

関連する問題