2013-11-01 68 views
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

+0

在添加值之前,您應該初始化字典。 – Sai

回答

3

的錯誤是由於你沒有建築物內ta_Hotel2room_types實例的事實。你應該添加如下構造函數或只是內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私人二傳手。而且,作爲一個便箋,我還會根據建議here重命名您的班級和成員。

1

在初始化之前,您無法將值設置爲hotel.room_types。就像Efran建議的那樣,在中使用公共構造函數ta_Hotel2類將解決您的問題。