我有三个类。第一个类调用Data类的AddInfo方法。然后Data类实例化字典。最后,控制器类调用getDictionary方法。它给了我一个错误:KeyNotFoundException:给定的键"info"不在字典中
HomeController.cs
public IActionResult Index()
{
Data d = new Data();
var getDic = d.getDictionary();
var Info = getDic["First"];
return View(Info);
}
Data.cs
public interface IData
{
Dictionary<string, object> getDictionary();
void AddInfo(string infoName, TheObject obj);
}
public class Data : IData
{
public Dictionary<string, object> infoList;
public Data()
{
infoList = new Dictionary<string, object>();
}
public Dictionary<string, object> getDictionary()
{
return this.infoList;
}
public void AddInfo(string infoName, TheObject obj)
{
infoList.Add(infoName, obj);
}
}
您的"Data"对象引用是在您的HomeController类中的以下行中创建的:
Data d = new Data();
然后几乎紧接着你就尝试在下面的线路上访问它:
var Info = getDic["First"];
在任何时候,您都不会调用d.AddInfo("first", testObject)
或类似的名称
如果您在其他地方有Data类的另一个实例,请记住这是两个完全独立的对象,因此不共享同一个字典。
如果您在更高的地方创建了Data类的实例,那么一个可能的解决方案可能是您需要将其传递到Index方法,如下所示:
public IActionResult Index(IData d)
{
var getDic = d.getDictionary();
var Info = getDic["First"];
return View(Info);
}