Básicamente trato de pasar un método a otra clase para llamarlo más tarde, pero no puedo entenderlo en C# (todavía estoy demasiado acostumbrado a Objective-C).Pasando una función de devolución de llamada a otra clase
public class Class1{
private void btn_click(object sender, EventArgs e)
{
ServerRequest sr = new ServerRequest();
sr.DoRequest("myrequest", myCallback);
}
public void myCallback(string str)
{
}
}
Luego, más tarde Quiero mi clase ServerRequest al fuego, básicamente, la función de devolución de llamada, es posible que esto no? (Básicamente, llamo a casa a un servidor para obtener una respuesta de inicio de sesión a mi software)
No he podido encontrar la manera de hacer esto con los delegados, continuamente obtengo errores. Aquí está la otra clase:
public class ServerRequest
{
public void DoRequest(string request, Delegate callback)
{
// do stuff....
callback("asdf");
}
}
¿Es esto posible en #? En Objective-C este sería simple y que acaba de hacer algo como
[myObject performSelector(@selector(MyFunctionName)) withObjects:nil];
tan simple gracias! ¡No tenía idea sobre Acción! – Geesu
¿Y cómo llama a DoRequest? ¿Pasas una cuerda o un método? – Kokodoko
para otros curiosos sobre Acción. aquí hay un consejo rápido. que puede tener múltiples parms tipo, pero no retorno (para pasar de C# sólo los miembros Acción no permite modificador de tipos Pasar función, utilice Func nuevo sin modificador en cualquier tipo la el último tipo en la lista es la función return type en realidad Action y Func son una forma rápida de usar delegados sencillos –
gg89