2011-11-18 67 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,它发生在我们所有人。 :) –