Как добавить элементы в свойство типа класса

#c# #list #oop

#c# #Список #ооп

Вопрос:

Ниже приведен мой класс со свойством списка псевдонимов типа класса (MeetingAliases). Как добавить несколько элементов в псевдонимы и передать в качестве параметра вместе с другими данными свойства TSGetRootObject некоторому методу. например.

 TSGetRootObject ts = new TSGetRootObject(); 
ts.aliases ???? //How to add data list here
ts.name = id;
ts.service_type = srvtype;
ts = TransfomationSrv.PostData(ts);

public class TSGetRootObject
{

    [DataMember]
    [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
    public List<MeetingAliases> aliases { get; set; }
    [DataMember]
    [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
    public bool? allow_guests { get; set; }
}

public class MeetingAliases
{ 
    [DataMember]
    [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
    public string alias { get; set; }
    [DataMember]
    [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
    public string conference { get; set; }
    [DataMember]
    [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
    public string description { get; set; }
    [DataMember]
    [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
    public int? id { get; set; }
}
  

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

1. Что-то вроде этого: ts.aliases = new List<MeetingAliases>(); ts.aliases.Add(new MeetingAliases());

2. как добавить данные в свойство MeetingAliases.

Ответ №1:

 ts.aliases = new List<MeetingAliases>(); 
ts.aliases.Add(new MeetingAliases
{
    alias = "Some text",
    conference = "Other text"
});
  

Я бы рекомендовал вам взглянуть на инициализатор объекта

Вы также можете инициализировать aliases список в конструкторе TSGetRootObject :

 public class TSGetRootObject
{
    public TSGetRootObject
    {
        aliases = new List<MeetingAliases>();
    }

    //Or in c# 6.0 or higher:
    public List<MeetingAliases> aliases { get; set; } = new List<MeetingAliases>();
}
  

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

1. Обратите внимание, что второй пример инициализатора доступен только с C # 6

2. @GeoffJames — правильно 🙂 добавит комментарий. Спасибо

3. Спасибо @GeoffJames

Ответ №2:

Одним из вариантов, как вы можете это сделать, было бы:

Добавьте конструктор туда TSGetRootObject , где вы инициализируете List . Затем добавьте новый объект MeetingAliases к TSGetRootObject объекту:

 TSGetRootObject ts = new TSGetRootObject(); 
ts.aliases.Add(new MeetingAliases {
       alias = "alias",
       conference = "conference",
       description = "description",
       id = 1
    }); 
ts.name = id;
ts.service_type = srvtype;
ts = TransfomationSrv.PostData(ts);

public class TSGetRootObject
{

    [DataMember]
    [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
    public List<MeetingAliases> aliases { get; set; }
    [DataMember]
    [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
    public bool? allow_guests { get; set; }

    public TSGetRootObject(){
        aliases = new List<MeetingAliases>();
    }
}

public class MeetingAliases
{ 
    [DataMember]
    [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
    public string alias { get; set; }
    [DataMember]
    [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
    public string conference { get; set; }
    [DataMember]
    [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
    public string description { get; set; }
    [DataMember]
    [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
    public int? id { get; set; }
}