用于在执行之前传递 lambda 表达式的方法参数类型

本文关键字:表达式 方法 参数 类型 lambda 执行 用于 | 更新日期: 2023-09-27 18:32:04

我正在尝试将一些基于接口的抽象改造为遗留代码,作为依赖注入的第一步。遗留代码包含我正在努力封装的 lambda 用法。以下是现有的 lambda 用法:

private void MethodAaa(EntityA a, EntityB a, int someInt) {...}
private void MethodBbb(DateTime date, EntityA e) {...}

_commandObjectFromThirdPartyLibrary.Execute(() => MethodAaa(a, b, c));
_commandObjectFromThirdPartyLibrary.Execute(() => MethodBbb(d, e));

我希望通过一个通用的基类方法路由 lamda 执行,如下所示:

base.CommonExecute( () => MethodAaa(a, b, c) );
base.CommonExecute( () => MethodBbb(d, e) );
base.CommonExecute( Action<???> lamdaExpression )
{
    _commandObjectFromThirdPartyLibrary.Execute( lamdaExpression );
}

有人可以提供一个如何声明基地的例子吗?CommonExecute(?) 正确吗?

用于在执行之前传递 lambda 表达式的方法参数类型

我认为使用操作委托的非通用版本没有任何问题:

base.CommonExecute(Action lambdaExpression )
{
    _commandObjectFromThirdPartyLibrary.Execute( lambdaExpression );
}

Action 的非通用版本是 void-void 版本:

public delegate void Action();