Я использую Autofac и mediatr. Поток - это сообщение от EventHub
, и я обрабатываю его и отправляю соответствующим обработчикам команд. Я могу добавить несколько вещей с точки зрения проектов api
, используя builder
.
builder.Register(ctx => {
var userInfo = ctx.Resolve<UserContextProvider>().GetUserInformation();
var connectionString = ResolveConnectionString(userInfo);
return new Repository(connectionString);
}).As<IRepository>();
Поскольку сообщения приходят из концентратора событий, мне нужно разрешить эти параметры динамически. Я ввел IComponentContext
в свой класс обработчика сообщений и пытаюсь разрешить параметры.
_componentContext.Resolve<ActivityCommandHandler>(new NamedParameter("conStr", ConnectionString));
Когда я ставлю точку останова на конструктор обработчика, я вижу conStr
при выполнении вышеуказанной строки.
Это правильный способ сделать это?
Когда я отправляю команду, используя _mediatr.send(mycommand)
, я получаю следующее исключение.
Ни один из конструкторов, найденных с Autofac.Core.Activators.Reflection.DefaultConstructorFinder
для типа CommandHandlers.ActivityCommandHandler
, не может быть вызван с доступными службами и параметрами:
Не удается разрешить параметр System.String conStr
конструктора Void .ctor(AutoMapper.IMapper, MediatR.IMediator, System.String)