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 to comment
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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...