Ответ 1
Оберните его в делегат типа Func<T, TResult>
с возвращаемым значением фиктивного типа, например.
public static void Execute(Action<T> remoteCall)
{
Execute(t => { remoteCall(t); return true; });
}
У меня есть две функции в моем классе с этими сигнатурами,
public static TResult Execute<TResult>(Func<T, TResult> remoteCall);
public static void Execute(Action<T> remoteCall)
Как передать один и тот же делегат во втором методе на первый? Создание метода с аргументом Delegate не является способом, потому что я теряю информацию об исключении
Большое спасибо!
Оберните его в делегат типа Func<T, TResult>
с возвращаемым значением фиктивного типа, например.
public static void Execute(Action<T> remoteCall)
{
Execute(t => { remoteCall(t); return true; });
}
вы просите буквально передать то, что не дает результата функции, которая этого требует.
Это бессмысленно.
Вы можете легко преобразовать любую функцию формы Action<T>
в Func<T,TResult>
, если вы готовы указать какое-либо значение результата (неявно или явно)
Func<T,TResult> MakeDefault<T,TResult>(Action<T> action)
{
return t => { action(t); return default(TResult);};
}
или
Func<T,TResult> MakeFixed<T,TResult>(Action<T> action, TResult result)
{
return t => { action(t); return result; };
}