Up to date
This page is up to date for Redot 4.3
.
If you still find outdated information, please create an issue.
GD0202: The parameter of the delegate signature of the signal is not supported¶
Rule ID |
GD0202 |
Category |
Usage |
Fix is breaking or non-breaking |
Breaking - If the parameter type is changed Non-breaking - If the |
Enabled by default |
Yes |
Cause¶
An unsupported type is specified for a parameter of a delegate annotated with
the [Signal]
attribute when a
Variant-compatible type is expected.
Rule description¶
Every signal parameter must be Variant-compatible so it can be marshalled when emitting the signal and invoking the callbacks.
class SomeType { }
// SomeType is not a valid parameter type because it doesn't derive from RedotObject,
// so it's not compatible with Variant.
public void InvalidSignalEventHandler(SomeType someType);
// System.Int32 is a valid type because it's compatible with Variant.
public void ValidSignalEventHandler(int someInt);
Take a look at the C# signals documentation for more information about how to declare and use signals.
How to fix violations¶
To fix a violation of this rule, change the parameter type to be Variant-compatible
or remove the [Signal]
attribute from the delegate. Note that removing the
attribute will mean the signal is not registered.
Tip
If the signal doesn't need to interact with Redot, consider using C# events directly. Pure C# events allow you to use any C# type for its parameters.
When to suppress warnings¶
Do not suppress a warning from this rule. Signal delegates with parameters that can't be marshalled will result in runtime errors when emitting the signal or invoking the callbacks.