2016-12-01 23 views
2

我正在嘗試爲LINE SDK(在亞洲地區流行的SNS服務)構建一個android綁定庫。我將SDK中的jar文件添加到了我的項目中,但它無法編譯,因爲SDK的創建者恰好碰巧對類和它的屬性使用相同的名稱。如何重命名Xamarin綁定庫中的屬性

這是從jar文件

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」生成的項目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

我認爲唯一的問題是,「PROPERTYNAME」應該只是「名」:

<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 ("AccessTokenString")]而不是[Register ("accessToken")]。因爲它聲明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>