我的类中有两个函数,其签名如下:
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; };
}