2009-03-21 3 views
4

Setter sind notwendig für die Sammlung Typ-EigenschaftenSetters für Kollektionstyp Eigenschaften

//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; } 
     } 
    } 

Wann verwende ich Typ 1 vs Typ 2? Wäre es nicht ausreichend, wenn ich eine Liste & benutze readonly Eigenschaft Kunden? wie in Company.Customers.Add(new Customer)

Was ist die beste Praxis in Bezug auf die Bereitstellung von Setter für die Sammlung Typeigenschaften?

Antwort

0

Ich ziehe

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

Aber diese requries

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

in Company Konstruktor

2

Nicht im Allgemeinen (und ich füge sie normalerweise nicht hinzu), aber sie sind notwendig, wenn Sie XmlSerializer verwenden möchten. Was ist ein Schmerz. Es muss auch ein konkreter Typ sein (zum Beispiel List<T> oder T[] - nicht IList<T>). Glücklicherweise leidet DataContractSerializer nicht das gleiche Schicksal.

+0

Ich würde gerne wissen, warum dies downvoted wurde ... Tatsache: XmlSerializer erfordert Setter auf Sammlung Eigenschaften. Dies ist keine Meinung, usw. - versuch es ... –