将Java SDK移植到Xamarin.Android,绑定有关类型的库错误

时间:2016-07-08 05:14:00

标签: android generics binding xamarin.android

我正在努力将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:{{ 1}} System.Collections.Generic.ICollection'匹配重写成员`Com.Kontakt.Sdk.Android.Ble.Configuration.Scan.AbstractProfileSpecificScanContext.EventTypes'(CS1715)(KontaktBeaconSDK)

为了解决错误,我可以在metadata.xml中使用以下行,告诉生成器更改方法的类型以与抽象类匹配:

Com.Kontakt.Sdk.Android.Ble.Configuration.Scan.EddystoneScanContext.EventTypes': type must be

基于:https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/customizing-bindings/java-bindings-metadata/#managedType

生成的输出仍然具有错误的形状:

<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>

正如您所见,System.Collections.ICollection已生成,而非System.Collections。 Generic .ICollection。 注意:我甚至还没弄清楚如何设置泛型类型,但这是下一步。

我是绑定的新手,我无法弄清楚。有人能告诉我我做错了什么吗?我在这里尝试不可能吗?我是否需要更改SDK的源代码? (请注意,如果我使用“Build”并手动更改输出,我可能会在将来获得dll(尽管仍然会有49个错误),但我想知道我是否能以正确的方式解决。)

我使用的另一个有用的链接:https://gist.github.com/brendanzagaeski/9607158

1 个答案:

答案 0 :(得分:0)

找到它:

<attr path="/api/package[@name='com.kontakt.sdk.android.ble.configuration.scan']/class[@name='EddystoneScanContext']/method[@name='getEventTypes' and count(parameter)=0]" name="return">System.Collections.Generic.ICollection&lt;Com.Kontakt.Sdk.Android.Ble.Discovery.EventType&gt;</attr>

由于name="return",错误似乎已消失。我不知道为什么返回没有出现在文档中但它出现在api.xml中所以应该没问题。

相关问题