我正在尝试向ASP .Net Core App实现类似控制台的小命令。我有一个类存储应该运行的名称和方法:
public class ActionCenter
{
public string ActionName { get; set; }
public Action ActionStart { get; set; }
}
我有一个列表List<ActionCenter> Actions
,其中存储了与它们相关的所有命令和方法。要运行方法,我可以Actions[0].ActionStart.Invoke
,但我没有返回方法。我尝试了Task<object>
但无法将System.Action
转换为System.Func<object>
。有没有办法从这种方式设计的方法返回,如果不是正确的方法?
答案 0 :(得分:0)
正如documentation和Action
:
封装没有参数且不返回的方法 的值强>
public delegate void Action()
据说你无法实现你想要的动作。另一方面,Func<TResult>
:
封装没有参数并返回值的方法 由TResult参数指定的类型。
因此,在您的情况下,您需要Func
而不是Action
。如果我们说你希望你的方法总是返回int
,那么你应该有一个Func<int>
等等。如果你的方法有任何意义,那么Funcs as Actions可以得到一个参数列表。因此,例如,如果你的方法有两个int类型的参数并返回另一个int,即你的Func的符号,它将是Func<int,int,int>
。