2011-10-16 27 views
0

我正在构建一个需要实现通用IList<>接口的特殊集合。事情是,我希望收集行为像一个非通用固定大小IList。我不希望用户能够插入或删除对象到集合中。如何在C#中实现固定的通用IList

IList接口由于某种原因未实现IsFixedSize属性。那么用通用的IList接口做这件事最好的办法是什么?我可以让Insert,RemoveRemoveAt方法抛出NotImplementedException,我会对此表示满意,但有没有更好的,更可接受的方法?

托尼

+0

请用相应的语言标签(C#?) –

回答

1

一个典型的方法是明确落实IList违规的成员一样AddInsertRemove,使他们不提供给人们,除非他们真的投你的事IList。这就是数组如何做的。

+0

这是我要采取的方法。我将实施我不想明确公开的成员,并作为私人成员。这样,当用户将鼠标悬停在我的课程实例上时,它们不会显示在IntelliSense中。 –

1

您可以使用ReadOnlyCollection<T>这是在你的IList<T>的包装,只允许阅读的内容,但没有添加或删除:

var myList = new List<string>(); 
var readonlyList = new ReadOnlyCollection<string>(myList); 
2

如果你不希望的大小'list'可以改变,然后使用一个数组。

如果您不希望集合可以编辑,请使用ReadOnlyCollection<T>

相关问题