I have two functions in my class with this signatures,
public static TResult Execute<TResult>(Func<T, TResult> remoteCall);
public static void Execute(Action<T> remoteCall)
How can I pass the same delegate in the second method to the first one? Creating method with Delegate argument is not a way, because I am loosing some exception informations
Thanks a lot!
Wrap it in a delegate of type Func<T, TResult>
with a dummy return value, e.g.
public static void Execute(Action<T> remoteCall)
{
Execute(t => { remoteCall(t); return true; });
}
you are asking literally to pass something that doesn't supply a result to a function that requires it.
This is nonsensical.
You can easily convert any function of Form Action<T>
to Func<T,TResult>
if you are willing to supply some result value (either implicitly or explicitly)
Func<T,TResult> MakeDefault<T,TResult>(Action<T> action)
{
return t => { action(t); return default(TResult);};
}
or
Func<T,TResult> MakeFixed<T,TResult>(Action<T> action, TResult result)
{
return t => { action(t); return result; };
}