From 6f8bf0a3b787c42b5b64ff0c35609b7d9d72e3b8 Mon Sep 17 00:00:00 2001 From: Simon Rozsival Date: Thu, 27 Mar 2025 12:16:22 +0100 Subject: [PATCH] Override GetInvokerTypeCore in AndroidTypeManager --- src/Mono.Android/Android.Runtime/AndroidRuntime.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/Mono.Android/Android.Runtime/AndroidRuntime.cs b/src/Mono.Android/Android.Runtime/AndroidRuntime.cs index fa62ebce7bf..601878f81eb 100644 --- a/src/Mono.Android/Android.Runtime/AndroidRuntime.cs +++ b/src/Mono.Android/Android.Runtime/AndroidRuntime.cs @@ -260,6 +260,7 @@ struct JniRemappingReplacementMethod bool jniAddNativeMethodRegistrationAttributePresent; + const DynamicallyAccessedMemberTypes Constructors = DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors; const DynamicallyAccessedMemberTypes Methods = DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods; const DynamicallyAccessedMemberTypes MethodsAndPrivateNested = Methods | DynamicallyAccessedMemberTypes.NonPublicNestedTypes; @@ -392,6 +393,19 @@ protected override IEnumerable GetSimpleReferences (Type type) }; } + [return: DynamicallyAccessedMembers (Constructors)] + protected override Type? GetInvokerTypeCore ( + [DynamicallyAccessedMembers (Constructors)] + Type type) + { + if (type.IsInterface || type.IsAbstract) { + return JavaObjectExtensions.GetInvokerType (type) + ?? base.GetInvokerTypeCore (type); + } + + return null; + } + delegate Delegate GetCallbackHandler (); static MethodInfo? dynamic_callback_gen;