如果有下面的代码,实现命令模式。我想将几个命令存储在一个列表中,然后从列表中选择它们,解析一个命令处理程序并最终执行该命令。
在实现这一点时,我遇到了问题,解决单个命令从 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>>();
}
有谁知道如何让它运行?