A question about interface inheritance in .NET

前端 未结 4 962
慢半拍i
慢半拍i 2021-01-06 18:11

Let\'s take the interface IQueryable for example:

public interface IQueryable : IQueryable, IEnumerable;

Sin

4条回答
  •  忘掉有多难
    2021-01-06 18:37

    The correct definition is:

    public interface IQueryable : IEnumerable, IQueryable { }
    

    The following was taken from Microsoft's Source RTMRel\ndp\fx\src\Core\System\Linq\IQueryable.cs\1305376\IQueryable.cs

        public interface IQueryable : IEnumerable {
            Expression Expression { get; } 
            Type ElementType { get; } 
    
            // the provider that created this query 
            IQueryProvider Provider { get; }
        }
    
    #if SILVERLIGHT 
        public interface IQueryable : IEnumerable, IQueryable {
    #else 
        public interface IQueryable : IEnumerable, IQueryable { 
    #endif
        } 
    
        public interface IQueryProvider{
            IQueryable CreateQuery(Expression expression);
            IQueryable CreateQuery(Expression expression); 
    
            object Execute(Expression expression); 
    
            TResult Execute(Expression expression);
        } 
    
        public interface IOrderedQueryable : IQueryable {
        }
    
    #if SILVERLIGHT
        public interface IOrderedQueryable : IQueryable, IOrderedQueryable { 
    #else 
        public interface IOrderedQueryable : IQueryable, IOrderedQueryable {
    #endif 
        }
    

提交回复
热议问题