4

依存性注入の準備段階として、いくつかのインターフェイス ベースの抽象化をレガシー コードに後付けしようとしています。レガシー コードには、カプセル化するのに苦労しているラムダの使用法が含まれています。既存のラムダの使用法は次のとおりです。

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));

次のように、共通の基本クラスメソッドを介してラムダ実行をルーティングしたいと思います。

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 に答える