在c#中控制对内部集合的访问 - 需要模式

Mat*_*ats 5 c# collections design-patterns data-access

这有点难以解释,我希望我的英语足够:

我有一个类"A",它应该维护一个类"B"的对象列表(就像一个私有列表).类"A"的使用者应该能够将项添加到列表中.将项目添加到列表后,消费者应该无法再次修改它们,单独留下他不应该使用列表本身(添加或删除项目).但他应该能够枚举列表中的项目并获取它们的值.有它的模式吗?你会怎么做?

如果问题不够清楚,请告诉我.

VVS*_*VVS 4

为了防止编辑列表或其项目,您必须使它们不可变,这意味着您必须在每个请求上返回元素的新实例。

请参阅 Eric Lippert 的优秀系列“C# 中的不变性”:http://blogs.msdn.com/ericlippert/archive/tags/Immutability/C_2300_/default.aspx(您必须向下滚动一点)