From f0ec392bb131d2ecfdecc94c46215be792ac389d Mon Sep 17 00:00:00 2001 From: DE-YU_H14 Date: Sat, 12 Apr 2025 03:39:24 +0800 Subject: [PATCH] [.Net] Avoid StringName allocations if type does not defines `_Get` or `_Set` --- .../GodotSharp/Core/Bridge/CSharpInstanceBridge.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Bridge/CSharpInstanceBridge.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Bridge/CSharpInstanceBridge.cs index 7b6b35b68fe..d17b7327822 100644 --- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Bridge/CSharpInstanceBridge.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Bridge/CSharpInstanceBridge.cs @@ -59,6 +59,11 @@ namespace Godot.Bridge return godot_bool.True; } + if (!godotObject.HasGodotClassMethod(GodotObject.MethodName._Set.NativeValue.DangerousSelfRef)) + { + return godot_bool.False; + } + var nameManaged = StringName.CreateTakingOwnershipOfDisposableValue( NativeFuncs.godotsharp_string_name_new_copy(CustomUnsafe.AsRef(name))); @@ -107,6 +112,11 @@ namespace Godot.Bridge return godot_bool.True; } + if (!godotObject.HasGodotClassMethod(GodotObject.MethodName._Get.NativeValue.DangerousSelfRef)) + { + return godot_bool.False; + } + var nameManaged = StringName.CreateTakingOwnershipOfDisposableValue( NativeFuncs.godotsharp_string_name_new_copy(CustomUnsafe.AsRef(name)));