Jump to content

[C#] Event-basierte Callbacks


Recommended Posts

Hallo alle,

 

für die C#-Entwickler habe ich vor einiger Zeit ein Pull Request an Tinkerforge gestellt, dass die Callback-behandlung auf Events umstellt, so wie es in .NET üblich ist.

 

Bisher wurden die Änderungen nicht von TF übernommen, was ich verstehen kann, da ich die Delegates alle umbenannt habe und es dadurch etwas inkompatibel zu den aktuellen Bindings ist.

 

Um meine Motivation zu erhöhen (ich muss im Moment bei allen Änderungen am Original ja auch meine Bindings aktualisieren) dachte ich mir ich poste meine Bindings hier einfach mal. Falls jemand Interesse daran hat oder Feedback geben möchte höre ich es gerne ^^

 

Die Binding gibt es hier: https://github.com/downloads/NobodysNightmare/generators/TF-with-Events_1.1.9.zip

Das ganze github-project: https://github.com/NobodysNightmare/generators

 

Warum eigentlich

Ich hatte zweieinhalb Motivationsgründe ^^

1. Mehr als ein Listener pro Callback (siehe Code unten)

2. Typ-Prüfung zur Compilezeit (falls man einen falschen Delegate angibt knallt es nicht erst beim Ausführen)

2,5. In .NET wird es halt einfach so gemacht, ich finde es "sauberer"

 

Noch schnell Beispielcode und dann bin ich auch schon fertig:

servoBrick.PositionReached += firstHandler;
servoBrick.PositionReached += secondHandler;

...

public void firstHandler(byte servoNum, short position)
{
if(servoNum != 0)
  return;

//Do something with servo 0
}

public void secondHandler(byte servoNum, short position)
{
if(servoNum != 1)
  return;

//Do something with servo 1
}

Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...