2017-05-02 4 views
0

インターフェイスはインスタンス化できませんが、asp .netのContext.Handlerの戻り値の型はインターフェイスのIHttpHandlerです!インターフェイスインスタンシエーションASP .net

Context.Handlerはインターフェイスのオブジェクトをどのように返すのですか?

+0

これは、 'IHttpHandler'インタフェースを実装しているオブジェクトのインスタンスを返しています。 –

答えて

3

そうではありません。そのインターフェイスを実装するクラスのインスタンスを返します。デバッグ中に戻り値を調べると、正確な戻り値の型がわかります。戻り値の型は、そのインタフェースを実装するANYクラスになります。

1

これは、戻り値の型が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戻り型の有効なリターンです。