Я использую файл autofac json, в котором перечислены все мои зависимости.Для справки ниже приведен файл json.
{
"defaultAssembly": "DigitalAssistant.Wharf",
"components": [
{
"type": "DigitalAssistant.Dialogs.RootDialog, DigitalAssistant.Wharf",
"services": [
{
"type": "Microsoft.Bot.Builder.Dialogs.IDialog, Microsoft.Bot.Builder"
}
],
"injectProperties": true,
"instanceScope": "perlifetimescope"
}
]
}
Мой класс RootDialog выглядит следующим образом:
[Serializable]
public class RootDialog : IDialog<object>
{
public Task StartAsync(IDialogContext context)
{
context.Wait(MessageReceivedAsync);
return Task.CompletedTask;
}
private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result)
{
var activity = await result as Activity;
// Calculate something for us to return
int length = (activity.Text ?? string.Empty).Length;
// Return our reply to the user
await context.PostAsync($"You sent {activity.Text} which was {length} characters");
context.Wait(MessageReceivedAsync);
}
}
и внутри MessageController.cs разрешаю зависимость следующим образом:
public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
if (activity.GetActivityType() == ActivityTypes.Message)
{
using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, activity))
{
var dialog = scope.Resolve<IDialog<object>>();
await Conversation.SendAsync(activity, () => dialog);
}
}
else
{
HandleSystemMessage(activity);
}
var response = Request.CreateResponse(HttpStatusCode.OK);
return response;
}
Проблема заключается в том, что при регистрации модуля с помощью приведенного ниже кода в Global.asax:
var config = new ConfigurationBuilder();
config.AddJsonFile("autofac.json");
var module = new ConfigurationModule(config.Build());
builder.RegisterModule(module);
он выдает ошибку как тип DigitalAssistant.Dialogs.RootDialog не назначается службе Microsoft.Bot.Builder.Dialogs.IDialog.
Что мне здесь не хватает, пожалуйста, помогите.