c# - 如何重命名 Xamarin 绑定(bind)库中的属性

标签 c# xamarin

我正在尝试为 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/

相关文章:

javascript - Visual Studio 显示错误

c# - 生成警告 _GetPrimaryCpuAbi 目标 -> Xamarin.Android.Common.Debugging.targets(311,2) : warning : One or more errors occurred

xamarin - 如何从推送通知中取消注册客户端?

android - Azure 通知中心 - 注册频率?

c# - 二维数组

c# - CTRL+R CTRL+T 不适用于 VisualStuidio2017

c# - createprocessasuser 后 .NET 应用程序崩溃

ios - 使用 Xamarin Studio 在 iOS 中实现 'About' View

ios - 在模拟器中模拟 Apple pencil 似乎是可行的

c# - 以编程方式将 DNS 设置为 'Obtain automatically'