2

我真的是 C# 新手,所以请对我温柔 ;)

我正在尝试编写一个继承自 DataGridView 类的类。在大多数情况下,它很简单......但我在尝试使用任何 linq 查询访问基本集合(DataGridViewRowCollection 等......)时遇到问题......据我所知......我' d 需要实现 IEnumerable 和 IEnumerator 接口......但在我继承的类中,我确实没有额外的功能。所以......我想要的只是确保我继承的类提供与 DataGridView 相同的查询功能。

我已经阅读了很多关于此的内容......但似乎我找不到一个直接的答案,它会说“无论如何......只是从基类中实现了那些东西”,以编程方式......当然...... .

显然,我希望派生类的用户(即我)在基类不需要它们的情况下不必为一堆显式转换而烦恼。

最后......无论我最终在派生类中做什么......我需要将我的类声明为:

MyDataGridViewClass:DataGridView、IEnumerable、IEnumerate

或者,一旦我修复了我必须在我的代码中修复的内容,IEnumerable、IEnumerate 部分是否会隐含?

提前致谢。

4

1 回答 1

1

您在任何接口的基类中执行的任何实现都将在继承者(子类)上可用。

interface IFoo
{
   void Foo();
}

class Foo : IFoo
{
   public void Foo() { }
}

class FooBar : Foo
{
}

这都是有效的:

FooBar fooBar = new FooBar();
Foo foo = fooBar;
IFoo ifoo = foo;

ifoo.Foo();

如果Foo方法被显式声明:

class Foo : IFoo
{
   void IFoo.Foo() { }
}

必须进行演员表。

于 2012-10-29T19:32:22.120 回答