在下面的示例中,如何使用qnaResult的名称更改本地QNARESULTHERE.json文件?
public async Task ITSupportIntent(IDialogContext context, LuisResult result)
{
var qnaResult = itKB.GetAnswer(result.Query);
if (qnaResult.StartsWith("CARD"))
{
var reply = context.MakeMessage();
try
{
string json = File.ReadAllText(HttpContext.Current.Request.MapPath("~\\AdaptiveCards\\QNARESULTHERE.json"));
对不起,这个问题到处都是。 内容: 我需要的实际变量是我认为在此处引用的QnAAnswer:Integrate QnA Maker and LUIS to distribute your knowledge base
答案 0 :(得分:2)
目前尚不清楚您要从结果中获取什么值,但是假设LuisResult
上具有FileName
属性,例如,您可以使用字符串插值(自C#起可用) 7),像这样:
string relativePath = $"~\\AdaptiveCards\\{result.FileName}.json";
您可能还会发现@
样式的逐字字符串语法在这里效果更好,因为这意味着您不必转义反斜杠:
string relativePath = $@"~\AdaptiveCards\{result.FileName}.json";
如果您使用的是较旧版本的C#,则还可以使用string.Format
或仅使用普通的旧字符串连接:
string relativePath = string.Format(@"~\AdaptiveCards\{0}.json", result.FileName);
string relativePath = @"~\AdaptiveCards\" + result.FileName + ".json";
无论您选择哪种方式,您当然都希望像过去一样传递结果值。
string json = File.ReadAllText(HttpContext.Current.Request.MapPath(relativePath));
答案 1 :(得分:2)
您可以像这样使用string.Format()
:
string json = File.ReadAllText(HttpContext.Current.Request.MapPath(string.Format(@"~\AdaptiveCards\{0}.json", qnaResult));
以上假设qnaResult
是包含所需文件名的字符串。如果它是一个类实例,则使用包含文件名的适当实例属性。