#123943·godot

C#: An error is logged for every generic class that implements a godot type

Author: CrabNickolsonCreated Sep 28, 2026Updated Sep 28, 2026
Labelsbugtopic:dotnetregression

Tested versions

  • Reproducible in: v4.8.dev.mono.custom_build [1d797566ee]
  • Not reproducible in: v4.8.dev.mono.custom_build [2fc1f18472]

System information

Godot v4.8.dev.mono (1d797566ee) - CachyOS Linux #1 SMP PREEMPT_DYNAMIC Sat, 26 Sep 2026 19:43:45 +0000 on Wayland - X11 display driver, Multi-window, 2 monitors (2560x1440 @ 119.95 Hz, 1920x1080 @ 119.93 Hz) - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 3080 (nvidia; 615.71.09) - AMD Ryzen 7 5800X 8-Core Processor (16 threads) - 62.71 GiB memory - PulseAudio (44100 Hz, Stereo/mono)

Issue description

For each generic C# class that implements a godot type, an error is logged. So if you have something like this:

csharp
public abstract partial class GenericNode<T> : Node { }
csharp
public partial class SpecificNode : GenericNode<float> { }

Then this error is logged:

E 0:00:00:972   void System.Reflection.RuntimeMethodInfo.ThrowNoInvokeException(): System.InvalidOperationException: Late bound operations cannot be performed on types or methods for which ContainsGenericParameters is true.
  <C++ Error>   System.InvalidOperationException
  <C++ Source>  :0 @ void System.Reflection.RuntimeMethodInfo.ThrowNoInvokeException()
  <Stack Trace> :0 @ void System.Reflection.RuntimeMethodInfo.ThrowNoInvokeException()
                :0 @ object System.Reflection.RuntimeMethodInfo.Invoke(object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
                ScriptManagerBridge.cs:1111 @ void Godot.Bridge.ScriptManagerBridge.GetGodotClassTrampolinesForType(System.Type, Godot.Bridge.ScriptManagerBridge+TrampolineCollectorPool)
                ScriptManagerBridge.cs:829 @ void Godot.Bridge.ScriptManagerBridge.UpdateScriptTrampolines(nint, Godot.NativeInterop.godot_bool*, System.Void(System.IntPtr, Godot.NativeInterop.godot_string_name*, System.Int32, System.Void*, Godot.NativeInterop.godot_bool), System.Void(System.IntPtr, Godot.NativeInterop.godot_string_name*, System.Void*, System.Void*), System.Void(System.IntPtr, Godot.NativeInterop.godot_string_name*, System.Int32, System.Void*))

But other than, everything still seems to work as expected and SpecificNode can be used as normal. From what I can tell, this is a regression from #116300.

Steps to reproduce

  1. Open MRP
  2. Run Project
  3. Observe error being logged

Minimal reproduction project (MRP)

bug-csharp-generic-classes.zip