我正在尝试为 LINE SDK(亚洲地区流行的 SNS 服务)构建一个 Android 绑定(bind)库。我将 SDK 中的 jar 文件添加到我的项目中,但它无法编译,因为 SDK 的创建者碰巧对类及其属性使用了相同的名称。
这是项目从 jar 文件生成的 C# 代码的一部分
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”。我尝试在 Metadata.xml 中添加一些命令,但没有效果。这是我写的一行供引用
<attr path="/api/package[@name='jp.line.android.sdk.model']/class[@name='AccessToken']/field[@name='accessToken']" name="propertyName">AccessTokenString</attr>
如果有人能帮助我,我将不胜感激。我完全迷失在这里了。
最佳答案
@SuavePirate 的建议不会完全起作用(至少现在不行)。
如果您使用 name
,它还会将 Register
属性参数重命名为 [Register ("AccessTokenString")]
而不是 [注册(“accessToken”)]
。正如它所说的here Xamarin.Android 绑定(bind)类将无法再访问该属性,因为它未绑定(bind)到现有的 Java 成员。
要正确更改包装成员的托管名称,需要设置 managedName
属性,即:
<attr path="/api/package[@name='jp.line.android.sdk.model']/class[@name='AccessToken']/field[@name='accessToken']" name="managedName">AccessTokenString</attr>
关于c# - 如何重命名 Xamarin 绑定(bind)库中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40913616/