0

我有几个难以填充的课程:

   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。

在下面的屏幕截图中,它显示酒店和房间对象都已创建 - 谁能告诉我我做错了什么?

谢谢,

标记

ss

4

2 回答 2

3

该错误是由于您没有构建room_typesinside的实例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>();
    }
}

另请注意,从封装的角度来看,在那之后我也会将 setter 设为room_typesprivate。而且,作为旁注,我还将按照此处的建议重命名您的类和成员。

于 2013-11-01T11:37:53.900 回答
1

在初始化之前,您不能为hotel.room_types赋值。就像 Efran 建议的那样,在ta_Hotel2类中使用公共构造函数将解决您的问题。

于 2013-11-01T12:17:10.410 回答