Если у вас есть приведенный ниже код, реализующий шаблон команды. Я хочу сохранить несколько команд в списке, а затем выбрать их из списка, разрешить обработчик команд и, наконец, выполнить команду.
При реализации этого я столкнулся с проблемой, что разрешение одной команды работало из 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>>();
}
Кто-нибудь знает, как это запустить?
GetActionHandler
,action
имеет типDisplayMessageAction
, тогда как во второй раз вы вызываете его сaction
типаIAction
. Итак, вы звоните.Resolve<IActionHandler<DisplayMessageAction>>
и.Resolve<IActionHandler<IAction>>
. Что ты пытаешься сделать ? почему вы вручную создаете действие? У вас много реализаций IActionHandler? Как вы их регистрируете? - person Cyril Durand   schedule 23.02.2015