2009-09-06 48 views
0

我有一个类,例如DerivedBindingList<T>,它来自BindingList<T>在派生类上正确实施索引器

我想用一个索引与派生类,并且已编码它为:

 public T this[int index] 
     { 
      get 
      { 
       // Getter code 
      } 
      set 
      { 
       // Setter code 
      } 
     } 

但是,编译器使用以下信息抱怨:” ...隐藏继承的成员“System.Collections中.ObjectModel.Collection.this [int]'。如果隐藏是有意的,请使用new关键字。“

我可以添加'new'关键字并且编译器很开心,但是我应该以某种方式做某事以避免这种警告吗?

也许我必须使用base.this []?

谢谢。

回答

2

BindingList中的索引器不是虚拟的,因此您无法重写它 - 如果您真的想这样做,您只需将其隐藏即可。

我不认为我会建议它 - 成员隐藏是混淆代码的秘诀。你想做什么?你是否一定想从BindingList<T>中派生出来,而不是编写它(即你的类中的成员是BindingList<T>)?你的新索引器要做什么?

+0

我想从列表中返回一组过滤或未过滤的结果,并且因此实现了IBindingListView和关联的过滤代码。我班的名字实际上是'FilteringBindingList '。 – Andy 2009-09-06 11:57:00

0

此警告显示索引器已存在于基类中。如果要更改其行为,则应该覆盖它(如果它在基类中定义为虚拟)或使用new关键字告诉编译器使用派生索引器方法,只要它与派生类的实例一起工作。