【发布时间】:2016-07-08 05:14:00
【问题描述】:
我正在将 Java SDK 移植到 Xamarin.Android。
在解决了无数错误之后,我陷入了这个:
/Users/alejandro_l/Projects/KontaktBeaconSDK/KontaktBeaconSDK/obj/Debug/generated/src/Com.Kontakt.Sdk.Android.Ble.Configuration.Scan.EddystoneScanContext.cs(65,65):错误 CS1715:@987654323 @System.Collections.Generic.ICollection' 匹配被覆盖的成员 `Com.Kontakt.Sdk.Android.Ble.Configuration.Scan.AbstractProfileSpecificScanContext.EventTypes' (CS1715) (KontaktBeaconSDK)
为了解决错误,我认为应该可以在 metadata.xml 中使用以下行告诉生成器更改方法的类型以匹配抽象类:
<attr path="/api/package[@name='com.kontakt.sdk.android.ble.configuration.scan']/class[@name='EddystoneScanContext']/method[@name='getEventTypes' and count(parameter)=0]" name="managedType">System.Collections.Generic.ICollection</attr>
生成的输出仍然有错误的形状:
static IntPtr id_getEventTypes;
public override unsafe global::System.Collections.ICollection EventTypes {
// Metadata.xml XPath method reference: path="/api/package[@name='com.kontakt.sdk.android.ble.configuration.scan']/class[@name='EddystoneScanContext']/method[@name='getEventTypes' and count(parameter)=0]"
[Register ("getEventTypes", "()Ljava/util/Collection;", "GetGetEventTypesHandler")]
get {
if (id_getEventTypes == IntPtr.Zero)
id_getEventTypes = JNIEnv.GetMethodID (class_ref, "getEventTypes", "()Ljava/util/Collection;");
try {
return global::Android.Runtime.JavaCollection.FromJniHandle (JNIEnv.CallObjectMethod (Handle, id_getEventTypes), JniHandleOwnership.TransferLocalRef);
} finally {
}
}
}
如您所见,生成的是 System.Collections.ICollection,而不是 System.Collections.Generic.ICollection。 注意:我什至还没有弄清楚如何设置泛型类型,但这是下一步。
我是装订新手,我无法弄清楚。有人可以告诉我我做错了什么吗?我在这里尝试一个不可能的事情吗?我需要更改 SDK 的源代码吗? (请注意,如果我使用“构建”并手动更改输出,我将来可能会得到 dll(但仍然存在 49 个错误),但我想知道我是否可以以正确的方式解决)。
我使用的另一个有用的链接:https://gist.github.com/brendanzagaeski/9607158
【问题讨论】:
标签: android generics binding xamarin.android