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_typesエラーは、 insideのインスタンスを作成していないことが原因です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 に答える