我是C#的新手,所以请温柔地对待我;)
我正在尝试编写一个将继承DataGridView类的类。在大多数情况下,它很简单......但是当我尝试使用任何linq查询访问基本集合(DataGridViewRowCollection等)时,我遇到了问题......根据我的理解......我d需要实现IEnumerable和IEnumerator接口......但在我继承的类中,我真的没有其他功能。所以......我想要的是确保我的继承类提供与DataGridView相同的查询功能。
我已经阅读了很多关于这一点...但似乎我找不到一个直接的答案,它会说“无论如何......只是从基类中实现了这些东西”,编程方式......当然...
显然,我想让我的派生类(即我)的用户在基类不需要它们的情况下不必费心去做一堆显式的强制转换。
最后......无论我最终在派生类中做什么......我是否需要将我的课程声明为:
MyDataGridViewClass:DataGridView,IEnumerable,IEnumerate
或者,一旦我修复了我在代码中修复的内容,IEnumerable,IEnumerate部分是否隐式?
提前感谢。
答案 0 :(得分: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() { }
}
演员必须要发生。