Как инициализировать вложенный класс в C#

#c# #.net #oop

#c# #.net #ооп

Вопрос:

Я пытаюсь инициализировать вложенный класс, ниже приведен вложенный класс.

 public class Msg
{        
    [JsonProperty("to")]
    public ToObj to { get; set; }   

    [JsonProperty("from")]
    public FromObj from { get; set; }

    [JsonProperty("timestamp")]
    public string timestamp { get; set; }

    [JsonProperty("message")]
    public MessageObj message { get; set; }
    public class ToObj
    {
        [JsonProperty("type")]
        public string type { get; set; }
        [JsonProperty("id")]
        public string id { get; set; }
        [JsonProperty("number")]
        public string number { get; set; }
    }

    public class FromObj
    {
        [JsonProperty("type")]
        public string type { get; set; }

        [JsonProperty("id")]
        public string id { get; set; }

        [JsonProperty("number")]
        public string number { get; set; }

    }        
    }
  

Нужно ли мне каждый раз инициализировать каждый класс? или любым другим способом инициализировать вложенный класс. Пожалуйста, дайте мне знать

Ответ №1:

Это можно сделать следующим образом :

 var foo = new Msg
{
    to = new Msg.ToObj
    {
        type = "hello",
        id = "42",
        number = "69"
    },
    from = new Msg.FromObj
    {
        type = "World",
        id = "12",
        number = "7"
    }
    // other initializations...
};
  

Однако я не знаю, почему вы используете public вложенный класс. Использование отдельного класса было бы более подходящим. Кроме того, From и To , похоже, имеют одни и те же свойства. Они могут быть уникальным классом :

 public class Obj
{
    public string type { get; set; }
    public string id { get; set; }
    public string number { get; set; }
}

public class Msg
{        
    public Obj to { get; set; }   

    public Obj from { get; set; }

    public string timestamp { get; set; } 
}
  

И инициализация :

 var foo = new Msg
{
    to = new Obj
    {
        type = "hello",
        id = "42",
        number = "69"
    },

    from = new Obj
    {
        type = "World",
        id = "12",
        number = "7"
    }
    // other initializations...
};
  

Комментарии:

1. Спасибо за ответ, я рассмотрю ваше предложение.

Ответ №2:

Вложенный класс будет вести себя как другой класс. Если вы хотите его инициализировать, вы можете сделать это в его конструкторе.