with example ejemplo dotnetperls delegate c# .net delegates

c# - example - ¿Cuál es la mejor manera de convertir Action<T> a Func<T, Tres>?



delegate c# (2)

Tengo dos funciones en mi clase con estas firmas,

public static TResult Execute<TResult>(Func<T, TResult> remoteCall); public static void Execute(Action<T> remoteCall)

¿Cómo puedo pasar el mismo delegado en el segundo método al primero? Crear un método con argumento Delegado no es una forma, porque estoy perdiendo algunas informaciones de excepción
¡Muchas gracias!


Envuélvalo en un delegado de tipo Func<T, TResult> con un valor de retorno ficticio, por ejemplo

public static void Execute(Action<T> remoteCall) { Execute(t => { remoteCall(t); return true; }); }


literalmente, está pidiendo que pase algo que no proporciona un resultado a una función que lo requiere.
Esto es absurdo.

Puede convertir fácilmente cualquier función de Form Action<T> a Func<T,TResult> si está dispuesto a proporcionar algún valor de resultado (ya sea de forma implícita o explícita)

Func<T,TResult> MakeDefault<T,TResult>(Action<T> action) { return t => { action(t); return default(TResult);}; }

o

Func<T,TResult> MakeFixed<T,TResult>(Action<T> action, TResult result) { return t => { action(t); return result; }; }