2012-10-29 35 views
2

我真的很新的C#,所以请对我温柔;)继承所有的IEnumerator从基类

我试图写一个类,将在DataGridView类继承。大多数情况下,这很简单...但是当我尝试使用任何linq查询访问基本集合(DataGridViewRowCollection等...)时,我遇到了一些问题......根据我的理解, d需要实现IEnumerable和IEnumerator接口......但是在我的继承类中,我确实没有其他功能。所以...我想要的只是确保我的继承类提供与DataGridView相同的查询功能。

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

显然,我希望我的派生类(即我)的用户不必在基类不需要它们的情况下显式强制转换。

最后......无论我结束了我的派生类中做什么......我将需要声明我的课为:

MyDataGridViewClass:DataGridView中,IEnumerable的,IEnumerate

还是将IEnumerable的,IEnumerate一旦我解决了我必须在我的代码中修复的内容,隐含的部分是隐含的?

在此先感谢。

回答

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() { } 
} 

铸造将不得不发生。

+0

你必须是f @ $%s $%^&me ...我一直在这花费大约1天半......只是为了找出我只是想念: “using System.Linq “ 在我的文件中。当我在基类上做同样的测试时,我在一个不同的文件里已经包含了这个语句...... 感谢Daniel花时间......这就是我理解事情的方法......只是因为我没有为我工作,那个小小的东西......当你不知道你在做什么时,发生这样的事情,我想......编译器/ intellisense并没有帮助我解决与它无关的消息太多的问题。 – ThermoX