当使用具有List或类似类型的只读属性的自定义类(即ObservableCollection)时,仍然可以"获取"变量并在其上调用Add()方法来更改内容.
有没有办法在"外部"访问中阻止这种情况(不会产生List类的巨大重载),或者如果不应该在类之外编辑它们,以另一种方式处理列表是"最佳实践"吗?
将引用类型转换为只读时,只读取对象的引用.对象本身仍然可以修改.对于List,您可以使用ReadOnlyCollection来公开集合,使其无法修改(您仍然可以在内部使用List来存储/修改数据.
FxCop实际上有一个规则来捕捉这些情况:
private List<string> _internalList = new List<string>();
public ReadOnlyCollection<string> ListProperty
{
get
{
return _inernalList.AsReadOnly();
}
}
Run Code Online (Sandbox Code Playgroud)
应该做的伎俩.