Up to date
This page is up to date for Godot 4.2
.
If you still find outdated information, please open an issue.
GD0202: The parameter of the delegate signature of the signal is not supported¶
Regel-ID |
GD0202 |
Kategorie |
Verwendung |
Fix führt oder führt nicht zu Kompatibilitätsbruch |
Kompatibilitätsbruch - Wenn der Parametertyp geändert wird Kein Kompatibilitätsbruch - Wenn das Attribut |
Standardmäßig aktiviert |
Ja |
Ursache¶
Ein nicht unterstützter Typ wird für einen Parameter eines Delegates angegeben, der mit dem Attribut [Signal]
annotiert ist, wenn ein Variant-kompatibler-Typ erwartet wird.
Regelbeschreibung¶
Jeder Signalparameter muss Variant-kompatibel sein, damit er beim Aussenden des Signals und beim Aufrufen der Callbacks gemarshalled werden kann.
class SomeType { }
// SomeType is not a valid parameter type because it doesn't derive from GodotObject,
// 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);
Werfen Sie einen Blick in die C#-Signale-Dokumentation für weitere Informationen über die Deklaration und Verwendung von Signalen.
Wie man Verstöße behebt¶
Um einen Verstoß gegen diese Regel zu beheben, ändern Sie den Parametertyp so, dass er mit einer Variante kompatibel ist, oder entfernen Sie das Attribut [Signal]
aus dem Delegate. Beachten Sie, dass das Entfernen des Attributs dazu führt, dass das Signal nicht registriert wird.
Tipp
Wenn das Signal nicht mit Godot interagieren muss, sollten Sie erwägen, C#-Events <https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/events/>`_ direkt zu verwenden. Bei reinen C#-Events können Sie jeden C#-Typ als seine Parameter verwenden.
Wann man Warnungen unterdrücken sollte¶
Unterdrücken Sie nicht eine Warnung zu dieser Regel. Signal-Delegates mit Parametern, die nicht marshalled werden können, führen zu Laufzeitfehlern beim Aussenden des Signals oder beim Aufrufen der Callbacks.