C# Android:以下方法或属性之间的调用不明确
我得到以下错误: 以下方法或属性之间的调用不明确:“Java.Interop.JavaObjectExtensions.JavaCastAndroid.Runtime.IJavaObject”和“Android.Runtime.Extensions.JavaCastAndroid.Runtime.IJavaObject” 使用此代码:C# Android:以下方法或属性之间的调用不明确,c#,compiler-errors,xamarin.android,jnienv,C#,Compiler Errors,Xamarin.android,Jnienv,我得到以下错误: 以下方法或属性之间的调用不明确:“Java.Interop.JavaObjectExtensions.JavaCastAndroid.Runtime.IJavaObject”和“Android.Runtime.Extensions.JavaCastAndroid.Runtime.IJavaObject” 使用此代码: // Get a pointer to the Java class. IntPtr jClass = JNIEnv.FindClass("com/company
// Get a pointer to the Java class.
IntPtr jClass = JNIEnv.FindClass("com/companyname/appname/JniClass");
// constructor.
IntPtr defaultConstructor = JNIEnv.GetMethodID(jClass,
"<init>",
"()V");
// new instance of the class.
IntPtr instance = JNIEnv.NewObject(jClass, defaultConstructor);
// Find method.
IntPtr methodID = JNIEnv.GetMethodID(jClass, "getResult", "()Ljava/lang/String;");
// Call the method.
IntPtr resultPtr = JNIEnv.CallObjectMethod(instance, methodID);
// Convert the pointer to return value
Java.Lang.Object jObject = new Java.Lang.Object(resultPtr, JniHandleOwnership.TransferLocalRef);
Java.Lang.String result = jObject.JavaCast<Java.Lang.String>(); // Compiler Error
我很好奇为什么编译器认为这段代码是错误的。当您有两个名称相同但在不同类中的方法,并且Visual Studio需要知道要使用哪个方法时,就会发生这种情况 将鼠标悬停在代码错误上,单击“灯光”图标,然后选择要使用的方法。您也可以左键单击错误代码,然后按ctrl+。点并选择你想要的方法
只是为了那些仍然犯同样错误的人 在我的例子中,我删除了对命名空间的引用
Android.Runtime
可能是你的情况
Android.Runtime.Extension
可能会帮助别人 我有两种将IJavaObject扩展到两个不同名称空间的方法。因此,我只能调用Namespace.ClassName.MethodNameparameter,而不能调用variable.MethodName。但是,这完全超出了使用扩展方法的想法。