我正在构建一个需要实现通用IList<>
接口的特殊集合。事情是,我希望收集行为像一个非通用固定大小IList
。我不希望用户能够插入或删除对象到集合中。如何在C#中实现固定的通用IList
IList
接口由于某种原因未实现IsFixedSize
属性。那么用通用的IList
接口做这件事最好的办法是什么?我可以让Insert
,Remove
和RemoveAt
方法抛出NotImplementedException
,我会对此表示满意,但有没有更好的,更可接受的方法?
托尼
我正在构建一个需要实现通用IList<>
接口的特殊集合。事情是,我希望收集行为像一个非通用固定大小IList
。我不希望用户能够插入或删除对象到集合中。如何在C#中实现固定的通用IList
IList
接口由于某种原因未实现IsFixedSize
属性。那么用通用的IList
接口做这件事最好的办法是什么?我可以让Insert
,Remove
和RemoveAt
方法抛出NotImplementedException
,我会对此表示满意,但有没有更好的,更可接受的方法?
托尼
一个典型的方法是明确落实IList
违规的成员一样Add
,Insert
和Remove
,使他们不提供给人们,除非他们真的投你的事IList
。这就是数组如何做的。
这是我要采取的方法。我将实施我不想明确公开的成员,并作为私人成员。这样,当用户将鼠标悬停在我的课程实例上时,它们不会显示在IntelliSense中。 –
您可以使用ReadOnlyCollection<T>
这是在你的IList<T>
的包装,只允许阅读的内容,但没有添加或删除:
var myList = new List<string>();
var readonlyList = new ReadOnlyCollection<string>(myList);
如果你不希望的大小'list'可以改变,然后使用一个数组。
如果您不希望集合可以编辑,请使用ReadOnlyCollection<T>
。
请用相应的语言标签(C#?) –