以下のコードがある場合、コマンド パターンを実装します。いくつかのコマンドをリストに保存し、その後リストからそれらを選択し、コマンドハンドラーを解決して、最後にコマンドを実行したいと考えています。
これを実装すると、Autofac から単一のコマンドを解決することはできましたが、リストに格納されているコマンドを解決すると、以前にコマンドハンドラーを解決したのと同じコマンドであっても、コマンドハンドラーが見つからないという例外が発生しました。
public static void ShowResolveProblem()
{
var action = new DisplayMessageAction("Hello");
var actionhandler = GetActionHandler(action); // this works well
var actions = new List<IAction>();
actions.Add(action);
actionhandler = GetActionHandler(actions[0]); // this throws exception
}
そして、これが解決方法です
private static IActionHandler<T> GetActionHandler<T>(T action) where T : IAction
{
var container = GetActionHandlerContainer();
return container.Resolve<IActionHandler<T>>();
}
これを実行する方法を知っている人はいますか?