У меня есть следующая регистрация
builder.Register<Func<Type, IRequestHandler>>(
c => request => (IRequestHandler)c.Resolve(request));
В основном я пытаюсь зарегистрировать фабричный метод, который разрешает экземпляр IRequestHandler из заданного типа.
Это работает нормально до версии 2.4.3.700. Но теперь я получаю следующую ошибку ... Имя объекта: 'Эта операция разрешения уже завершена. когда регистрация компонентов с использованием лямбда-выражений, параметр IComponentContext 'c' для лямбда не может быть сохранена. Вместо, либо снова разрешите IComponentContext из 'c' или разрешить Func <> на основе фабрика по созданию последующих компоненты из. '.
ОБНОВЛЕНИЕ
Я пытался ограничить доступ autofac к остальным проектам в решении. Ник, спасибо за подсказку, теперь моя регистрация выглядит так ...
builder.Register<Func<Type,IRequestHandler>>(c =>
{
var handlers = c.Resolve<IIndex<Type,RequestHandler>>();
return request => handlers[request];
});