.NET Framework Creazione di un elenco inizializzato con tipi personalizzati

Esempio

public class Model
{
    public string Name { get; set; }
    public bool? Selected { get; set; }
}

Qui abbiamo una classe senza costruttore con due proprietà: Name e una proprietà booleana nullable Selected . Se volessimo inizializzare un List<Model> , ci sono diversi modi per eseguirlo.

var SelectedEmployees = new List<Model>
 {
      new Model() {Name = "Item1", Selected = true},
      new Model() {Name = "Item2", Selected = false},
      new Model() {Name = "Item3", Selected = false},
      new Model() {Name = "Item4"}
 };

Qui, stiamo creando diverse new istanze della nostra classe Model e inizializzandole con i dati. Cosa succede se abbiamo aggiunto un costruttore?

public class Model
{

    public Model(string name, bool? selected = false)
    {
        Name = name;
        selected = Selected;
    }
    public string Name { get; set; }
    public bool? Selected { get; set; }
}

Questo ci consente di inizializzare la nostra lista in modo leggermente diverso.

var SelectedEmployees = new List<Model>
{
    new Model("Mark", true),
    new Model("Alexis"),
    new Model("")
};

Che dire di una classe in cui una delle proprietà è una classe stessa?

public class Model
{
    public string Name { get; set; }
    public bool? Selected { get; set; }
}

public class ExtendedModel : Model
{
    public ExtendedModel()
    {
        BaseModel = new Model();
    }

    public Model BaseModel { get; set; }
    public DateTime BirthDate { get; set; }
}

Si noti che abbiamo ripristinato il costruttore della classe Model per semplificare un po 'l'esempio.

var SelectedWithBirthDate = new List<ExtendedModel>
{
    new ExtendedModel()
    {
        BaseModel = new Model { Name = "Mark", Selected = true},
        BirthDate = new DateTime(2015, 11, 23)
    },
                    new ExtendedModel()
    {
        BaseModel = new Model { Name = "Random"},
        BirthDate = new DateTime(2015, 11, 23)
    }
};

Nota che possiamo scambiare la nostra List<ExtendedModel> con Collection<ExtendedModel> , ExtendedModel[] , object[] , o anche semplicemente [] .