IQueryable 继承了接口 IEnumable
public interface IQueryable : IEnumerable
为什么DbSet<TEntity>既要实现IQueryable,又要实现IEnumerable,按理只要实现IQueryable就行了。
public class DbSet<TEntity> : DbQuery<TEntity>, IDbSet<TEntity>, IQueryable<TEntity>, IEnumerable<TEntity>, IQueryable, IEnumerable, IInternalSetAdapter where TEntity : class
我的问题如下:
1、这样做有什么意义?
2、DbSet<TEntity>实现了IEnumerable,而我在DbSet<TEntity>这个类的实现里没找(通过F12查看元数据,没看源代码)到GetEnumerator方法,在他的父类DbQuery<TEntity>里也没找到。其他继承的都是接口,所以也不会有。为什么呢?
你的第一个问题应该就是楼上说的,就算接口有继承关系,如果你看到一个接口,还得去看层次继承树看所有的接口父类,才能知道这个类到底能转化为哪些接口,还不如显示的写出来。
第二个问题DbQuery<TEnity>里是有泛型和非泛型版的GetEnumerator方法的。
唯一的好处是让看代码的人方便点.