依赖注入和委托 c#
Dependency injection and delegates c#
我正在尝试在此 class 中添加依赖项注入,但我不确定是否可行。
[Serializable]
public class RootDialog : IDialog<object>
{
private Chat _chat;
private IFixedAnswerService _fixedAnswerService ;
public RootDialog(IFixedAnswerService fixedAnswerService, Chat chat)
{
_fixedAnswerService = fixedAnswerService;
}
public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> result)
{
if(_chat.channel = "messenger")
some code.....
_fixedAnswerService.find(xxxxx);
}
}
这样调用:
Chat chat = new Chat
{
BotId = new Guid(BotId),
ConversationId = 1
}
await Bot.Conversation.SendAsync(activity, () => new RootDialog(chat));
但我不想传递 IFixedAnswerService 作为参数,我只想传递聊天对象。
我正在像这样绑定 IFixedAnswerService:
kernel.Bind<IFixedAnswerService>().To<FixedAnswerService>();
但我不确定这是否可能。
我看到这是 v3,我假设这是一个现有的机器人,而不是全新的(如果是新的,我建议使用 v4)。
您可以注入生成根对话框的 MakeRoot 对象。但也许更好,将 FixedAnswerService 注入控制器并在 RootDialog 的构造函数中使用它。
https://github.com/microsoft/BotBuilder-Samples/blob/v3-sdk-samples/CSharp/intelligence-Zummer/Controllers/MessagesController.cs#L31
另请查看此答案 。
我正在尝试在此 class 中添加依赖项注入,但我不确定是否可行。
[Serializable]
public class RootDialog : IDialog<object>
{
private Chat _chat;
private IFixedAnswerService _fixedAnswerService ;
public RootDialog(IFixedAnswerService fixedAnswerService, Chat chat)
{
_fixedAnswerService = fixedAnswerService;
}
public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> result)
{
if(_chat.channel = "messenger")
some code.....
_fixedAnswerService.find(xxxxx);
}
}
这样调用:
Chat chat = new Chat
{
BotId = new Guid(BotId),
ConversationId = 1
}
await Bot.Conversation.SendAsync(activity, () => new RootDialog(chat));
但我不想传递 IFixedAnswerService 作为参数,我只想传递聊天对象。
我正在像这样绑定 IFixedAnswerService:
kernel.Bind<IFixedAnswerService>().To<FixedAnswerService>();
但我不确定这是否可能。
我看到这是 v3,我假设这是一个现有的机器人,而不是全新的(如果是新的,我建议使用 v4)。
您可以注入生成根对话框的 MakeRoot 对象。但也许更好,将 FixedAnswerService 注入控制器并在 RootDialog 的构造函数中使用它。 https://github.com/microsoft/BotBuilder-Samples/blob/v3-sdk-samples/CSharp/intelligence-Zummer/Controllers/MessagesController.cs#L31
另请查看此答案