集合类型属性
是否需要setter//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; }
}
}
我何时使用Type 1 vs Type 2?
如果我初始化List&amp;使用readonly属性客户?如Company.Customers.Add(new Customer)
为集合类型属性提供setter的最佳实践是什么?
答案 0 :(得分:3)
请阅读FxCop推荐CAS2227“收藏属性应该只读” http://msdn.microsoft.com/en-us/library/ms182327(VS.80).aspx
它包含了很好的建议:)
答案 1 :(得分:2)
一般情况下(我通常不会添加它们),但如果您想使用XmlSerializer
,则必须使用它们。这是一种痛苦。它也必须是具体类型(例如List<T>
或T[]
- 而不是IList<T>
)。幸运的是,DataContractSerializer
并没有遭遇同样的命运。
答案 2 :(得分:0)
我更喜欢
public IList<Customer> Customers { get; private set; }
但这需要
this.Customers = new List<Customer>();
Company
构造函数中的