我有一个包含私有(private)列表的类。我创建了一个 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 接口(interface)并覆盖 Add() 方法的新类,但我想知道是否有更简单/优雅的方法来“阻止”此 Add() 方法。
最佳答案
如果您至少使用 .NET 4.5,请返回 IReadOnlyList<T>
.
public class Test{
private List<T> myList;
public IReadOnlyList<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);
}
}
关于c# - 阻止 List.Add() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35651459/