Fondamentalmente sto provando a passare un metodo a un'altra classe per essere chiamato più tardi, ma non riesco a capirlo in C# (sono ancora troppo abituato a Objective-C).Passare una funzione di richiamata a un'altra classe
public class Class1{
private void btn_click(object sender, EventArgs e)
{
ServerRequest sr = new ServerRequest();
sr.DoRequest("myrequest", myCallback);
}
public void myCallback(string str)
{
}
}
poi in seguito voglio che la mia classe ServerRequest al fuoco fondamentalmente la funzione di callback, è questo non è possibile? (In pratica sto telefonando a un server per una risposta di accesso al mio software)
Non sono riuscito a trovare un modo per farlo con i delegati, ottenendo continuamente errori. Ecco l'altra classe:
public class ServerRequest
{
public void DoRequest(string request, Delegate callback)
{
// do stuff....
callback("asdf");
}
}
È possibile in #? In Objective-C questo sarebbe semplice e vorrei solo fare qualcosa di simile
[myObject performSelector(@selector(MyFunctionName)) withObjects:nil];
così semplice, grazie! Non avevo idea di Action! – Geesu
E come si chiama DoRequest? Passi una stringa o un metodo? – Kokodoko
per altri curiosi sull'azione. ecco un consiglio veloce si può avere più parms tipo, ma non ritorno (per il passaggio di C# membri solo Azione non permette modificatore sui tipi Per passare la funzione, utilizzare Func ancora alcun modificatore su qualsiasi tipo la l'ultimo tipo nella lista è la funzione tipo di ritorno in realtà Action e Func sono un modo rapido per utilizzare delegati semplici –
gg89