将字符串列表添加到字典,然后检索它的值

Adding a string List to a dictionary, then retrieving it's values

我正在使用 Selenium、Specflow、C# 创建测试场景。我有一个 List 并将其添加到 scenarioContext 字典中。现在我想在不同的步骤定义中检索它。我怎么做? 示例:

List<string> myList = new List<string>();

mylist.Add(Thomas);

mylist.Add(Bob);

mylist.Add(Andy);

this.scenariocontext.Add("myList", myList);

//创建了一个新列表以在不同的步骤场景中检索数据

List<string> NewList = new List<string>();

NewList  = this.ScenarioContext.Get<string>("myList");

当我尝试从字典中检索值时出现此错误 "Unable to cast object of type 'System.Collections.Generic.List`1[System.String]' to type 'System.String'."

我假设 scenarioContext 被声明为 Dictionary<string, List<string>>,您可以通过键检索值,在本例中是一个列表。这就是您的代码的样子:

选项 1

Dictionary<string, List<string>> scenarioContext = new Dictionary<string, List<string>>();

List<string> myList = new List<string>();

myList.Add("Thomas");

myList.Add("Bob");

myList.Add("Andy");

scenarioContext.Add("myList", myList);

List<string> newList = new List<string>();

newList = scenarioContext["myList"];

更新:我刚刚发现 SpecFlow 中的 ScenarioContext 有一个额外的 Getter。您在最后一行代码中将列表转换为字符串,它应该如下所示:

NewList  = this.ScenarioContext.Get<List<string>>("myList");

您可以使用 key 阅读字典。在您的情况下,它必须如下所示: newList = this.ScenarioContext["myList"];