What is the best way to convert Action to Func?

后端 未结 2 434
清酒与你
清酒与你 2020-12-20 11:05

I have two functions in my class with this signatures,

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


        
相关标签:
2条回答
  • 2020-12-20 11:43

    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; });
    }
    
    0 讨论(0)
  • 2020-12-20 11:57

    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; };
    }
    
    0 讨论(0)
提交回复
热议问题