#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:
Вложенный класс будет вести себя как другой класс. Если вы хотите его инициализировать, вы можете сделать это в его конструкторе.