Я работаю над проектом MS Bot Framework , где я получаю значение из пары ключ-значение из базы данных в C#. Ранее у меня было это:
var list = new List<KeyValuePair<int, string>>()
{
new KeyValuePair<int, string>(obj,_Obj.Questions)
};
Dictionary<int, string> d = new Dictionary<int, string>
{
{ 1, "Welcome, How are you?" },
{ 2, "Tell me something about yourself."},
{ 3, "How much experience do you have?"},
};
Моя цель состояла в том, чтобы принести Ценности, такие как «Добро пожаловать, как дела?», «Расскажите мне что-нибудь о себе» и т. Д. c из базы данных. Чтобы добиться этого, я сделал это:
Редактировать:
Questions.cs
public static string GetChats(int Id)
{
using (SqlCommand cmd = new SqlCommand("usp_FetchData", con))
{
var list = new List<KeyValuePair<int, string>>();
DataTable dt = new DataTable();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@id", Id);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
con.Open();
SqlDataReader reader = cmd.ExecuteReader();
if (reader.HasRows)
{
foreach (DataRow row in dt.Rows)
{
string queMsg = row["Description"]?.ToString();
list.Add(new KeyValuePair<int, string>(Id, queMsg));
}
}
// class property
public string WelcomeStmt = GetChats(1).ToString();
И значение Сверху функция получается в этом методе:
MyDialog.cs // это диалог для бота
private static async Task<DialogTurnResult> **NameStepAsync**(WaterfallStepContext stepContext, CancellationToken cancellationToken)
{
return await stepContext.PromptAsync(nameof(TextPrompt), new PromptOptions { Prompt = MessageFactory.Text(questions.AskName) }, cancellationToken);
}
Я передаю значение Id как 1 в методе GetChats (Id) . Исходя из этого, я должен получить соответствующее значение.
В методе NameStepAsyn c я получаю необычный родительский класс, который я предполагаю, вместо реальной строки, которую я ожидаю. :
System.Collections.Generi c .List1 [System.Collections.Generi c .KeyValuePair2 [System.Int32, System.String]].
Кто-нибудь знает, почему это происходит?
Спасибо.