### Godot version

4.2 247c354

### System information

Windows 10.0.19045 - Vulkan (Forward+) - dedicated NVIDIA GeForce GTX 1060 (NVIDIA; 30.0.15.1403) - Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz (8 Threads)

### Issue description

#75778 exposed `_validate_property()` to scripting. It's implemented in GDScript and C#, but not GDExtension (depends on #78634).
https://github.com/godotengine/godot/blob/247c3548d810136ffe9c1694cd76db3236efaa90/core/object/script_language_extension.h#L685-L687

Relevant discussion: https://github.com/godotengine/godot/pull/75778#discussion_r1307294940

### Steps to reproduce

1. Add GDExtension script
2. Use `_validate_property()`

### Minimal reproduction project

N/A
e, minfo);
			}
		}
	}
	virtual bool has_method(const StringName &p_method) const override {
		if (native_info->has_method_func) {
			return native_info->has_method_func(instance, (GDExtensionStringNamePtr)&p_method);
		}
		return false;
	}
	virtual Variant callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) override {
		Variant ret;
		if (native_info->call_func) {
			GDExtensionCallError ce;
			native_info->call_func(instance, (GDExtensionConstStringNamePtr)&p_method, (GDExtensionConstVariantPtr *)p_args, p_argcount, (GDExtensionVariantPtr)&ret, &ce);
			r_error.error = Callable::CallError::Error(ce.error);
			r_error.argument = ce.argument;
			r_error.expected = ce.expected;
		}
		return ret;
	}
	virtual void notification(int p_notification, bool p_reversed = false) override {
		if (native_info->notification_func) {
			native_info->notification_func(instance, p_notification, p_reversed);
#ifndef DISABLE_DEPRECATED
		} else if (deprecated_native_info.notification_func) {
			deprecated_native_info.notification_func(instance, p_notification);
#endif 
		}
	}
	virtual String to_string(bool *r_valid) override {
		if (native_info->to_string_func) {
			GDExtensionBool valid;
			String ret;
			native_info->to_string_func(instance, &valid, reinterpret_cast<GDExtensionStringPtr>(&ret));
			if (r_valid) {
				*r_valid = valid != 0;
			}
			return ret;
		}
		return String();
	}
	virtual void refcount_incremented() override {
		if (native_info->refcount_incremented_func) {
			native_info->refcount_incremented_func(instance);
		}
	}
	virtual bool refcount_decremented() override {
		if (native_info->refcount_decremented_func) {
			return native_info->refcount_decremented_func(instance);
		}
		return false;
	}
	virtual Ref<Script> get_script() const override {
		if (native_info->get_script_func) {
			GDExtensionObjectPtr script = native_info->get_script_func(instance);
			return Ref<Script>(reinterpret_cast<Script *>(script));
		