2010-09-21 134 views
3

顯然,擴展方法不適用於子類,還是僅僅是我?擴展方法不適用於子類?

private class Parent 
{   
} 

private class Child 
{ 
} 

public static class Extensions 
{ 
    public static void Method(this Parent parent) 
    { 
    } 
} 

//Test code 
var p = new Parent(); 
p.Method();   // <--- compiler like 
var c = new Child(); 
c.Method();   // <--- compiler no like 

UPDATE

有一個在這個問題(我要離開,以便其他有意義)一個錯字 - 我忘了讓Child繼承Parent

碰巧,我真正的問題是我沒有合適的using聲明。

(不幸的是,我無法刪除,因爲在回答太多的upvotes。)

+0

我猜測孩子應該繼承父母嗎? (好吧,晚了幾秒鐘:o)) – hhravn 2010-09-21 10:01:55

回答

7

這應該只是罰款(LINQ擴展都是建立在IEnumerable<T>頂部,他們在List<T>等工作。 )。問題是你的例子中Child沒有從Parent繼承。

+0

是的。 Benjoi,我們可以假設一個錯字還是這個答案? – 2010-09-21 10:00:21

+0

事實上,添加'Child:Parent'使其全部工作 – 2010-09-21 10:00:45

+0

OK,我的錯誤:(確實是Typo。事情是,這是演示代碼,爲了問題的緣故,嘗試重現問題,但在真實代碼中,它並沒有't work。*回到煤礦... *(我應該刪除這個問題嗎?) – Benjol 2010-09-21 10:04:52