BotBuilder V4中的访问器有什么意义?

时间:2018-10-04 21:44:59

标签: botframework

在机器人生成器v4预览版发布期间,我可以通过turnContext来获取自己的状态,如下所示:

var state = await turnContext.GetConversationState<MyConversationState>();
state.CounterState.Count++; // state updated... no other steps

现在,在非预览版本中,我必须设置访问器来获取我的状态,使整个过程非常复杂,就像这样:

var state = await _accessors.CounterState.GetAsync(turnContext, () => new CounterState());
state.TurnCount++;
await _accessors.CounterState.SetAsync(turnContext, state);
await _accessors.ConversationState.SaveChangesAsync(turnContext);
await turnContext.SendActivityAsync(responseMessage);

我了解如何使用和实现访问器,我只是在其中使用了它们。有人可以解释为什么上面的第二种方法比第一种更好吗?在第一种方法中,我有一个状态类,该类保存我可以在该类中管理的所有数据。现在,据我了解,我以前拥有的那个类成为访问者?

1 个答案:

答案 0 :(得分:1)

如果不需要/不需要,则不需要使用访问器。它们的存在是为了使开发人员只能将要公开的属性公开给应用程序的特定组件。

例如,如果您正在收集应用程序中有关用户的个人数据,但必须通过状态转移才能对应用程序的其他不需要用户个人数据的组件进行读写。您可以公开自己的状态,而无需通过访问器公开所有内容。

如果您不需要此安全性/功能,则不需要使用访问器。