我有一个包含私人列表的类。我创建了一个getter和将元素添加到列表中的方法:阻止List.Add()方法
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'](https://msdn.microsoft.com/en-us/library/e78dcd75(v = vs.110).aspx),然后没有人可以添加(除非他们使用反射)。 – Sinatr