将Action 转换为Func 的最佳方法是什么?

我的class上有两个带有这个签名的函数,

public static TResult Execute(Func remoteCall); public static void Execute(Action remoteCall) 

如何将第二种方法中的同一委托传递给第一种方法? 使用Delegate参数创建方法不是一种方法,因为我丢失了一些exception信息
非常感谢!

将它包装在Func类型的委托中Func并带有虚拟返回值,例如

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

你在字面上要求将不能提供结果的东西传递给需要它的函数。
这是荒谬的。

如果您愿意提供某些结果值(隐式或显式),您可以轻松地将Form Action任何函数转换为Func

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

要么

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