2009-03-21 7 views
4

Are setters nécessaires pour recueillir des propriétés de typeSetters pour les propriétés de type collection

//Type 1  
class Company 
{ 
    private IList<Customer> customers; 

    public IList<Customer> Customers 
    { 
     get { return customers; } 
     set { customers = value; } 
    } 
} 

//Type 2 
class Company 
{ 
     private readonly IList<Customer> customers = new List<Customer>(); 

     public IList<Customer> Customers 
     { 
       get { return customers; } 
     } 
    } 

Quand dois-je utiliser le type 1 vs type 2? Ne suffirait-il pas si j'initialise une liste & use readonly property Customers? comme dans Company.Customers.Add(new Customer)

Quelle est la meilleure pratique en ce qui concerne la fourniture de setters pour les propriétés de type de collection?

Répondre

0

Je préfère

public IList<Customer> Customers { get; private set; } 

Mais cette requries

this.Customers = new List<Customer>(); 

dans Company constructeur

2

Pas en général (et je ne les ajoute normalement pas), mais ils sont nécessaires si vous souhaitez utiliser XmlSerializer. Ce qui est une douleur. Il doit également s'agir d'un type concret (par exemple List<T> ou T[] - et non). Heureusement, DataContractSerializer ne subit pas le même sort.

+0

J'aimerais savoir pourquoi cela a été déprécié ... fait: XmlSerializer exige des setters sur les propriétés de collection. Ce n'est pas une opinion, etc - essayez-le ... –

Questions connexes