我有几个课程,我很难填充:
public class ta_Room
{
public string url { get; set; }
public double price { get; set; }
public string room_code { get; set; }
}
public class ta_Hotel2
{
public int hotel_id { get; set; }
public Dictionary<string, ta_Room> room_types { get; set; }
}
在我的控制器中我有:
[HttpGet]
public ta_Hotel2 hotel_inventory() //int api_version, string lang)
{
{
ta_Room room = new ta_Room();
room.price = 23;
room.room_code = "1";
room.url = "http://www.nme.com";
ta_Hotel2 hotel = new ta_Hotel2();
hotel.room_types.Add("Single", room);
但是我在上面的最后一行得到了NullReferenceException。
在下面的屏幕截图中,它显示了酒店和房间对象都已创建 - 有人可以告诉我我做错了吗?
谢谢,
标记
答案 0 :(得分:3)
错误是由于您未在room_types
内构建ta_Hotel2
的实例。您应该按如下方式添加构造函数,或者只在hotel_inventory()
中实例化它:
public class ta_Hotel2
{
public int hotel_id { get; set; }
public Dictionary<string, ta_Room> room_types { get; set; }
public ta_Hotel2()
{
room_types = new Dictionary<string, ta_Room>();
}
}
另请注意,从封装的角度来看,我还会在此之后将room_types
的setter设为私有。而且,作为旁注,我还会按照建议here重命名您的课程和成员。
答案 1 :(得分:1)
在初始化之前,您无法为 hotel.room_types 指定值。与Efran建议的方式一样,在 ta_Hotel2 类中使用公共构造函数将解决您的问题。