我还没有完全了解界面,所以我想我会以一种帮助我更好地理解它的方式来表达问题。
我正在按照让我制作IQueryable的教程。为什么我不能只创建一个Queryable?
答案 0 :(得分:4)
Queryable
只是一个包含extension methods到IQueryable<T>
接口的静态类。您不会在代码中直接使用Queryable
,而是在给定IQueryable<T>
实例的情况下调用其方法。
答案 1 :(得分:2)
Queryable
是一个静态类,它为实现IQueryable
的任何内容提供了一些方便实用的方法。你无法做到,因为它已经制作完成了。您需要创建一个实际执行您希望它执行的操作的新类,并实现IQueryable
,以便编写使用IQueryable
(包括Queryable
)的其他代码知道如何使用它。 / p>
答案 2 :(得分:1)
接口是定义方法和属性的契约,但接口中没有实现。
类通过为接口中定义的所有内容提供实现来实现接口。
由于接口没有实现,因此无法创建一个实例。您必须创建实现该接口的类的实例。
但是,您可以拥有接口类型的引用,但它将指向实际的对象。使用接口引用时,可以使用接口中定义的所有内容,但如果类包含更多方法,则在不转换实际类的引用的情况下无法访问它们。
答案 3 :(得分:0)
接口并不意味着如何对类进行编码,而只是如何定义与该类的交互。
可能有许多不同的类实现可以查询,但只要与所有这些类的交互相同,这就不重要了。