我在课堂上ICollection
打电话foos
,我想以只读方式公开(见这个问题).我看到界面定义了一个属性.IsReadOnly
,这似乎是合适的......我的问题是:我如何让对于foos
只读类的消费者明白?
.IsReadOnly
在尝试未实现的方法之前,我不想依赖它们记住查询.Add()
.理想情况下,我想揭露foos
的ReadOnlyCollection
,但它没有实现IList
.我应该foo
通过一个名为,例如,GetReadOnlyFooCollection
而不是通过属性公开的方法公开?如果是这样,这不会混淆那些期望的人ReadOnlyCollection
吗?
这是C#2.0,所以扩展方法ToList()
不可用......
你可以像这样把"foos"变成一个ReadOnlyCollection:
ReadOnlyCollectionreadOnlyCollection = foos.ToList ().AsReadOnly();
然后,您可以将其作为类的属性公开.
编辑:
class FooContainer { private ICollectionfoos; public ReadOnlyCollection ReadOnlyFoos { get { return foos.ToList ().AsReadOnly();} } }
注意:您应该记住,一旦获得ReadOnlyFoos集合,就不再与您的foos ICollection"同步".查看您引用的主题.