У меня есть интересная проблема, когда класс наследует от класса, который реализует IEnumerable, но я также хочу, чтобы класс реализовал IEnumerable для другого типа.Все работает, за исключением методов расширения IEnumerable, что означает, что я не могу сделать никакой LINQ к объектам по умолчанию, не всегда вызывая сначала.У кого-нибудь есть какие-либо идеи помимо постоянного кастинга?
using System;
using System.Collections.Generic;
using System.Linq;
namespace LinqTesting
{
public class Trucks<T> : Vehicles, IEnumerable<Truck>
{
public Trucks()
{
// Does Compile
var a = ((IEnumerable<Truck>)this).FirstOrDefault();
// Doesn't Compile, Linq.FirstOrDefault not found
var b = this.FirstOrDefault();
}
public new IEnumerator<Truck> GetEnumerator() { throw new NotImplementedException(); }
}
public class Vehicles : IEnumerable<Vehicle>
{
public IEnumerator<Vehicle> GetEnumerator() { throw new NotImplementedException(); }
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { throw new NotImplementedException(); }
}
public class Vehicle { }
public class Truck : Vehicle { }
}