Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Passing a callback function to another class

Tags:

c#

I'm basically trying to pass a method to another class to be called later, but can't quite figure this out in C# (I'm still too used to Objective-C).

public class Class1{      private void btn_click(object sender, EventArgs e)     {         ServerRequest sr = new ServerRequest();         sr.DoRequest("myrequest", myCallback);     }      public void myCallback(string str)     {     } } 

Then later on I want my ServerRequest class to basically fire the callback function, is this not possible? (I'm basically phoning home to a server for a login response to my software)

I haven't been able to find a way to do this with delegates, continuously get errors. Here is the other class:

public class ServerRequest {     public void DoRequest(string request, Delegate callback)     {         // do stuff....         callback("asdf");     } } 

Is this possible in #? In Objective-C this would be simple and I would just do something like

[myObject performSelector(@selector(MyFunctionName)) withObjects:nil]; 
like image 673
Geesu Avatar asked Mar 29 '12 19:03

Geesu


1 Answers

You can pass it as Action<string> - which means it is a method with a single parameter of type string that doesn't return anything (void) :

public void DoRequest(string request, Action<string> callback) {     // do stuff....     callback("asdf"); } 
like image 113
BrokenGlass Avatar answered Sep 30 '22 19:09

BrokenGlass