c# - parameter - Usando tipos de retorno nulo con nuevas Func<T, TResult>
send a method as parameter c# (4)
Estoy usando un delegado anónimo en mi código que llama a esta función de ejemplo:
public static int TestFunction(int a, int b) {
return a + b;
}
El delegado se ve así:
var del = new Func<int, int, int>(TestFunction);
Mi pregunta es: ¿cómo se especifica un tipo de retorno void
para TResult
? Lo siguiente no funciona:
public static void OtherFunction(int a, string b) { ... }
var del = new Func<int, string, void>(OtherFunction);
Necesitas Action <T> si no quieres devolver algo
Si no hay un tipo de retorno, desea Action<int,string>
:
var del = new Action<int, string>(OtherFunction);
o solo:
Action<int, string> del = OtherFunction;
Tienes que usar Action <T> si quieres devolver el void.
Use Action en lugar de Func si no necesita ningún valor de retorno
public void InvokeService<T>(Binding binding, string endpointAddress, Action<T> invokeHandler) where T : class
{
T channel = FactoryManager.CreateChannel<T>(binding, endpointAddress);
ICommunicationObject communicationObject = (ICommunicationObject)channel;
try
{
invokeHandler(channel);
}
finally
{
try
{
if (communicationObject.State != CommunicationState.Faulted)
{
communicationObject.Close();
}
}
catch
{
communicationObject.Abort();
}
}
}