2011-11-18 63 views
1

比方說,我有一個泛型類看起來像這樣泛型類傳承與LINQ擴展方法

public class GenericCollection<T> : Collection<T>, IQueryable<T> 
{ 
    public string SomeCollectionProperty { get; set; } 

    ... 
    // IQueryable implentations 
} 

現在我有上面的父類

public class SomeCollection : GenericCollection<SomeType> 
{ 
    // Some Additional Functionality here 
} 

內泛型類的子類我已經充分利用了LINQ擴展方法(例如,Where,First,Select等)

只要我嘗試訪問我的派生類中的LINQ擴展方法,等它的IQueryable或IEnumerable的

我希望它這樣做(內SomeCollection)

public SomeType FindFirst(int SomeProperty) 
{ 
    return this.First(t => t.someproperty == SomeProperty); 
} 

,而是當我打的。在此之後的Visual Studio不給我任何的擴展方法

我令人頭大我的大腦試圖理解爲什麼

特別是因爲如果在我的泛型類我剛剛從Collection<T>它實現IEnumerable<T>具有LINQ繼承與它相關的擴展方法我仍然可以在我的泛型類中使用LINQ擴展方法,但是一旦我根據泛型類定義強類型類,我就會丟失LINQ擴展方法

我希望我不會混淆每個人,因爲我肯定覺得我很困惑

回答

2

我的猜測是它找不到擴展方法,因爲你可能需要有:

using System.Linq; 

這應該是你的子類。

+0

*嘆*我當然會想念明顯 這就是我得到我想所有類別的同一組使用聲明 感謝白癡檢查:-) – TofuBug

+0

@Tofu,它發生在我們所有人。 :) –