将Action <T>转换为Action <object>

Mag*_*adh 21 c#

我被卡住了.

如何转换Action<T> to an Action<Object>in C#?

关心马格努斯

DK.*_*DK. 51

以下是您要求的示例(可以在最后一行添加类型检查以正确处理无效的强制转换异常,以便更加用户友好):

public Action<object> Convert<T>(Action<T> myActionT)
{
    if (myActionT == null) return null;
    else return new Action<object>(o => myActionT((T)o));
}
Run Code Online (Sandbox Code Playgroud)

可能你可以提供有关任务的更多细节,因为现在它看起来有点奇怪.

  • 你的 else 语句是多余的 (4认同)
  • @jperez - 这是个人喜好的问题。我们中的一些人更喜欢看到“if”..“else”..结构。即使涉及“return”语句。原因:这将“视觉上”的语句置于“逻辑上”同一级别的同一级别(此处为下一级)。也就是说,前进的两条路径是由‘if’的“条件”来选择的;它们可以被视为都位于主流的“下一级”。恕我直言,这两种风格 - 你建议的和这里所做的 - 都是同样有效的。这是关于编码员选择强调什么的权衡。 (2认同)