【发布时间】:2019-07-31 20:03:09
【问题描述】:
我正在尝试在这个类中添加依赖注入,但我不确定是否可行。
[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>();
但我不确定这是否可能。
【问题讨论】:
-
首先,您没有接受 Chat 对象的 RootDialog 构造函数。你知道吗?还有,
_serviceFixedAnswer和_fixedAnswerService不一样……这是故意的吗? -
是的,我在构造函数中错过了聊天,重点是,我想发送聊天,但是 IFixedAnswerService 我不想通过,我要 ninject 处理它。
标签: c# dependency-injection delegates botframework ninject