收藏属性
public List<MapMarker> Markers { get; set; }
public List<UIReport > Reports { get; set; }
答案 0 :(得分:4)
要阻止客户分配全新的集合,请使用私有字段(readonly
,如果适用)和公共get-only属性。
private readonly IList<T> _items = new List<T>();
public IList<T> Items
{
get { return _items; }
}
要阻止客户分配全新的收藏品和修改您的收藏品,请使用IReadOnlyCollection<T>
public MyClass()
{
List<T> list = //new list
_items = new ReadOnlyCollection<T>(list);
}
private readonly IReadOnlyCollection<T> _items;
public IReadOnlyCollection<T> Items
{
get { return _items; }
}
将列表作为IEnumerable<T>
返回并不是一个非常可靠的选项。客户端可以简单地将可枚举的数据转发回列表,并进行变异。您应该将可变列表包装在ReadOnlyCollection<T>
。
答案 1 :(得分:0)
如果您想要只读集合,请使用ReadOnlyCollection类
var coll = new ReadOnlyCollection<char>("myreadonlycollection".ToCharArray());
答案 2 :(得分:0)
这样的东西?
public List<MapMarker> Markers { get; private set; }
public List<UIReport > Reports { get; private set; }