4

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

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

4

2 回答 2

5

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

base.CommonExecute(Action lambdaExpression )
{
    _commandObjectFromThirdPartyLibrary.Execute( lambdaExpression );
}
于 2012-04-23T16:24:43.880 回答
0

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

public delegate void Action();
于 2012-04-23T16:27:06.940 回答