In Unity müssen Sie bei Verwendung von Coroutinen oder InvokeRepeating eine Zeichenfolge mit dem Namen der Funktion angeben, die Sie aufrufen möchten. Dies ist jedoch ein Problem, wenn Sie den Namen dieser Funktion ändern, da Sie daran denken müssen, die verwendeten Routinen zu ändern. Gibt es einen saubereren Weg, dies zu tun?Name der Funktion in C#
Derzeit sieht es wie folgt aus:
InvokeRepeating ("SendChangedValues", SEND_RATE, SEND_RATE);
obwohl es schön wäre,
etwas wieInvokeRepeating (SendChangedValues.Name(), SEND_RATE, SEND_RATE); //or
InvokeRepeating (functions.GetName(SendChangedValues), SEND_RATE, SEND_RATE);
zu haben Ist das möglich in C#? Oder etwas anderes, das sicherstellt, dass ich einen Fehler/eine Warnung erhalte, wenn ich den Namen der Funktion ändere, ohne diese Zeichenfolgen zu ändern.
Edit 1: Die sauberste Sache, die ich mir vorstellen konnte, ist, eine const-Zeichenkette mit dem Namen der Funktion zu machen und sie direkt vor die Funktion selbst zu setzen. Es ist also schwieriger zu vergessen, die Zeichenkette zu ändern, da sie direkt darüber liegt, und ich muss nur diese eine konstante Zeichenkette ändern, um alle Koroutinen zu ändern.
Danke!
Ich habe noch nie davon gehört, aber ID schlägt vor, Sie erstellen eine Zeichenfolge Variable zu verwenden, wenn Sie es in einem Aufruf verwenden müssen und diese Zeichenfolge neben der entsprechenden Methode – Sayse
Haha, ja, das ist auch, was ich gerade dachte: DI hat meine Frage bearbeitet, während Sie Ihren Kommentar geschrieben haben: P –
Sie können wahrscheinlich ein benutzerdefiniertes Attribut erstellen, um Ihre Funktionen zu dekorieren, und dieses Attribut kann eine Zeichenfolge als Bezeichner verwenden, die sich nicht ändern muss, wenn sich der Funktionsname ändert. Dann muss ein Code, der diese Zeichenfolge enthält, eine Funktion finden, die mit einem mit dieser Zeichenfolge initialisierten benutzerdefinierten Attribut versehen ist, den Methodennamen abrufen und als Parameter an "InvokeRepeating" übergeben.Es kann nicht garantiert werden, dass jemand die Zeichenfolge des Attributs ändert, aber das sollte nicht nötig sein und somit die Wahrscheinlichkeit eines schlechten Code-Refactors (theoretisch zumindest) verringern. – LB2