2012-10-29 90 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