【发布时间】:2016-06-09 15:40:49
【问题描述】:
我有一个包含私有列表的类。我创建了一个 getter 和一个向列表添加元素的方法:
public class Test{
private List<T> myList;
public List<T> MyList
{
get { return myList; }
}
public Test()
{
myList = new List<T>();
}
public void AddElements(T element)
{
// Do dome stuff, subscribe to an event of T
myList.Add(element);
}
}
由于每次将一个元素添加到我的列表中,我都想做更多的事情,我不希望有人在代码的某些部分直接添加一个元素:
Test test = new Test();
// Wrong
test.MyList.Add(element);
// Right
test.AddElements(element);
我曾考虑创建一个实现 IList 接口并覆盖 Add() 方法的新类,但我想知道是否有更简单/优雅的方式来“阻止”这个 Add() 方法。
【问题讨论】:
-
如果您不希望有人能够修改它,请不要公开
List。你可以暴露ReadOnlyCollection,然后没有人可以添加(除非他们使用反射)。