接口无法实例化,而是上下文的返回类型。
context.handler返回接口的对象?
不是。它正在返回实现该接口的类的实例。如果在调试时检查返回值,则可以看到确切的返回类型 - 返回类型可以是实现接口的任何类。
这只是告诉您返回类型必须为类型IHttpHandler
。
更具体和可控的示例:
public interface IFoo { }
public class Foo : IFoo { }
public class Bar : IFoo { }
public class Whatever
{
public IFoo GetAFoo(bool thing)
{
if (thing)
return new Foo();
else
return new Bar();
}
}
Foo
和Bar
都在实现IFoo
,因此IFoo
返回类型的有效返回也是。