如何在C#中重写List <T> .IsReadOnly

Fil*_*ącz 0 c# overriding properties readonly

我试图从List派生并有选择地打开和关闭IsReadOnly属性.我希望Add/Remove/[]函数能够使用这个属性,但它们不会.这样做的正确方法是什么?

我的派生类有一些额外的属性,所以我不能简单地将列表包装在ReadOnlyCollection中.

Ree*_*sey 7

在这种情况下,使用封装而不是继承.

你应该让你的类实现IList <T>,并拥有一个私有的List <T>变量.

你可以通过你想要的任何函数,但也可以完全覆盖它们,改变行为等.这使你完全控制(代价是有许多方法除了调用this.List.method(...)之外什么都不做) .

一般来说,在任何情况下我都不认为继承BCL集合类是个好主意.我更喜欢将它们作为我班级内部的实现细节.