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

cam*_*ase 4 c# lambda

我试图将一些基于接口的抽象改进为遗留代码,作为依赖注入的初步步骤.遗留代码包含我正在努力封装的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));
Run Code Online (Sandbox Code Playgroud)

我希望通过公共基类方法路由lamda执行,如下所示:

base.CommonExecute( () => MethodAaa(a, b, c) );
base.CommonExecute( () => MethodBbb(d, e) );

base.CommonExecute( Action<???> lamdaExpression )
{
    _commandObjectFromThirdPartyLibrary.Execute( lamdaExpression );
}
Run Code Online (Sandbox Code Playgroud)

有人可以提供一个如何正确声明base.CommonExecute(?)的示例吗?

Ste*_*ner 5

我没有看到使用Action代理非泛型版本有什么问题:

base.CommonExecute(Action lambdaExpression )
{
    _commandObjectFromThirdPartyLibrary.Execute( lambdaExpression );
}
Run Code Online (Sandbox Code Playgroud)