通用类继承和LINQ扩展方法

时间:2011-11-18 18:00:31

标签: c# generics inheritance

假设我有一个看起来像这样的通用类

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扩展方法(ex Where,First,Select等)

当我尝试在派生类中访问LINQ扩展方法时,似乎忘记了它是IQueryable或IEnumerable

我希望它能做到这样的事情(在SomeCollection里面)

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

但是当我击中时。在这个视觉工作室之后没有给我任何扩展方法

我正在试图理解为什么

特别是因为如果在我的Generic类中,我只是继承自实现Collection<T>的{​​{1}},它具有与之关联的LINQ扩展方法,我仍然可以在我的泛型类中使用LINQ扩展方法但是只要我根据我的泛型类定义了一个强类型类我松散了LINQ扩展方法

我希望我不要只是混淆每个人,因为我确实觉得我很困惑

1 个答案:

答案 0 :(得分:2)

我的猜测是找不到扩展方法,因为你可能需要:

using System.Linq;

这应该在您的子类中。