从 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
. Action
s 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
有没有办法从通用操作委托中的 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
. Action
s 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