2016-12-01 16 views
2

LINE SDK(アジア地域で人気のあるSNSサービス)用のアンドロイドバインディングライブラリを構築しようとしています。 SDKのJARファイルをプロジェクトに追加しましたが、SDKの作成者がクラスとそのプロパティに同じ名前を使用するため、コンパイルが失敗します。Xamarinバインディングライブラリのプロパティの名前を変更する方法

これは、プロジェクトが

今すぐ簡単に言えば
public partial class AccessToken : global::Java.Lang.Object { 
    // Metadata.xml XPath field reference: path="/api/package[@name='jp.line.android.sdk.model']/class[@name='AccessToken']/field[@name='accessToken']" 
    [Register ("accessToken")] 
    public string AccessToken { 
     get { /* ... */ } 
     set { /* ... */ } 
    } 
//... 
} 

が、私は、このプロパティ「AccessTokenを」名前を変更する方法を知りたいjarファイルから生成されたC#コードの一部です。私はMetadata.xmlにいくつかのコマンドを追加しようとしましたが、何の効果もありませんでした。ここに私が参照用に書いた線があります

<attr path="/api/package[@name='jp.line.android.sdk.model']/class[@name='AccessToken']/field[@name='accessToken']" name="propertyName">AccessTokenString</attr> 

誰かが私を助けてくれたら大変感謝しています。私はここで完全に失われています。

+0

それはですので、あなたが結合プロジェクトおよび/または '.jar'へのリンクがありますかどのようなプロパティが以前のように見えるか分かりやすい? (get/setメソッドの可能性が最も高い) –

答えて

2

私が唯一の問題は、「プロパティ名」は単に「名前」でなければならないことであると考えている:

<attr path="/api/package[@name='jp.line.android.sdk.model']/class[@name='AccessToken']/field[@name='accessToken']" name="name">AccessTokenString</attr> 
1

(現在は少なくともではない)完全に動作しません示唆して何@SuavePirate。

nameを使用する場合は、Register属性のパラメータの名前を、[Register ("accessToken")]の代わりに[Register ("AccessTokenString")]と変更します。そのため、hereという名前で、Xamarin.Androidバインディングクラスは既存のJavaメンバーにバインドされていないため、そのプロパティにアクセスできなくなります。

が適切に包まれたメンバーの管理名を変更するには、managedName属性を設定する必要がある、すなわち:

<attr path="/api/package[@name='jp.line.android.sdk.model']/class[@name='AccessToken']/field[@name='accessToken']" name="managedName">AccessTokenString</attr> 
関連する問題