0

我正在尝试使用 NineOldAndroids 来实现与 3.x 之前的设备的向后兼容性,但我遇到了以下构建错误:

.../NineOldAndroids/obj/Debug/generated/src/Com.Nineoldandroids.Animation.AnimatorSet.cs(83,83):错误 CS0508: Com.Nineoldandroids.Animation.AnimatorSet.SetDuration(long)': return type must beCom.Nineoldandroids.Animation.Animator' 匹配被覆盖的成员 `Com.Nineoldandroids.Animation .Animator.SetDuration(long)' (CS0508) (NineOldAndroids)

但生成代码中的签名如下所示:

public override global::Com.Nineoldandroids.Animation.AnimatorSet SetDuration (long p0)

AnimatorSet 的类签名如下所示:

public sealed partial class AnimatorSet : global::Com.Nineoldandroids.Animation.Animator {

问题是,由于 AnimatorSet 是从 Animator 继承的,我不确定为什么会出现问题。

是否有任何您知道或知道如何解决此问题的为 MonoDroid 绑定 NineOldAndroids 的示例?

4

1 回答 1

0

这些错误消息是因为 C# 不支持协变返回类型,而 Java ≥1.5 支持。

将这些行添加到Transforms/Metadata.xml

<attr path="/api/package/class[@name='AnimatorSet']/method[@name='setDuration']" name="managedReturn">Com.Nineoldandroids.Animation.Animator</attr>
<attr path="/api/package/class[@name='ValueAnimator']/method[@name='setDuration']" name="managedReturn">Com.Nineoldandroids.Animation.Animator</attr>
于 2013-06-20T09:56:09.013 回答