从 Action Delegate C# 的 Invoke 方法中获取结果

Get Result from Invoke Method from Action Delegate C#

有没有办法从通用操作委托中的 invoke 方法中获取结果?

代码执行

public string TestRun()
{
   ExecuteService<SomeClass>(e => e.ExecuteMethod(), out var result);
   return result; // return the value;
}

Class方法

public class SomeClass
{
    public string ExecuteMethod()
    {
        return "Hello!?";
    }
}

执行通用动作委托的方法

protected internal void ExecuteService<TAction>(Action<TAction> action, out Response response) where TAction : new()
{
    action?.Invoke(new TAction()); // invoke
    response = action?.something() // problem... how to get the value from this point forward
}

如何在动作委托 ExecuteService<> 方法中获取此方法 ExecuteMethod() 的返回值并将其分配给 out 值?这可以实现吗?

您可以通过不使用 Action. Actions in C# are a delegate that return void, i.e nothing. If you need a return value from a delegate use either Func or if you need it to specifically return a boolean use Predicate 来做到这一点。像这样:

protected internal void ExecuteService<TAction>(Func<TAction> action, out Response response)
{
    response = action?.Invoke();
}

如果你需要内部 action 接受参数,使用另一个 Func 类 像 this 一个接受 1 个参数和 returns T