Я получаю сообщение об ошибке, что область не существует в текущем контексте, когда я звоню await SendAsync(activity, scope => new TransferToAgentDialog(scope.Resolve<IUserToAgent>()))
. Область должна передать scope.Resolve<IUserToAgent>
, когда она инициализирует новый TransferToAgentDialog
класс.
Я попытался инициализировать область действия:
public TransferToAgent scope = new TransferToAgent(scope.Reslove<IUserToAgent>);
Это, однако, создает проблему, состоящую в том, что вы не можете передать scope.Resolve<IUserToAgent>
при инициализации scope
.
public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
if (activity.Type == ActivityTypes.Message)
{
await SendAsync(activity, scope => new TransferToAgentDialog(scope.Resolve<IUserToAgent>()));
}
else
{
HandleSystemMessage(activity);
}
var response = Request.CreateResponse(HttpStatusCode.OK);
return response;
}
Класс SendAsync
private async Task SendAsync(IMessageActivity toBot, Func<ILifetimeScope, IDialog<object>> MakeRoot, CancellationToken token = default(CancellationToken))
{
using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, toBot))
{
DialogModule_MakeRoot.Register(scope, () => MakeRoot(scope));
var task = scope.Resolve<IPostToBot>();
await task.PostAsync(toBot, token);
}
}