无法从源类型转换为目标类型

时间:2014-02-05 20:07:53

标签: c# android xamarin.android xamarin

我是C#的新手,所以我正在做一些教程。 当我尝试从Xamarin Studio运行教程Android项目时出现此错误:

  

抛出了System.InvalidCastException。无法从源类型转换为目标类型。

这是给出错误的代码:

public Java.Lang.Object [] GetSections ()
{ 
    var intPtr = JNIEnv.NewArray (sections.ToArray ());
    var array = new JavaArray<Java.Lang.Object> (intPtr, JniHandleOwnership.TransferLocalRef);
    return (Java.Lang.Object []) array;
}

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

您正在将JavaArray<Java.Lang.Object>投射到Java.Lang.Object []

GetSessions()的返回类型更改为JavaArray<Java.Lang.Object>

public JavaArray<Java.Lang.Object> GetSections ()
{ 
    var intPtr = JNIEnv.NewArray (sections.ToArray ());
    return new JavaArray<Java.Lang.Object> (intPtr, JniHandleOwnership.TransferLocalRef);
}

答案 1 :(得分:0)

你的第二个问题可能意味着你已经实现了一个具有GetSections方法需要返回类型的Java.Lang.Object的界面。

如果您自己创建了界面,那么您可能会犯到与此方法相同的错误。

所以:

public JavaArray<Java.Lang.Object> GetSections ()
{ 
    var intPtr = JNIEnv.NewArray (sections.ToArray ());
    return new JavaArray<Java.Lang.Object> (intPtr, JniHandleOwnership.TransferLocalRef);
} 

,您的界面应如下所示:

public JavaArray<Java.Lang.Object> GetSections ();

我认为你两次犯了同样的错误