MVCの作業を開始しました。mvc のDropDownListのチュートリアル中に、以下に示すようにIEnumerable型を返すプロパティを見ました。
public IEnumerable<location> ListofLocation{get;set;}
上記のプロパティは、ドロップダウンに入力される場所のリストを返すモデルのプロパティです。
私の質問は、「インターフェイスのオブジェクトを作成できない場合、なぜこの型がインターフェイスで返されるのか」ということです。
MVCの作業を開始しました。mvc のDropDownListのチュートリアル中に、以下に示すようにIEnumerable型を返すプロパティを見ました。
public IEnumerable<location> ListofLocation{get;set;}
上記のプロパティは、ドロップダウンに入力される場所のリストを返すモデルのプロパティです。
私の質問は、「インターフェイスのオブジェクトを作成できない場合、なぜこの型がインターフェイスで返されるのか」ということです。
しかし、どのようにして戻り値の型をインターフェースにすることができるのでしょうか?
つまり、メソッドは、その特定のインターフェイスを実装するクラスのオブジェクトを返すことができます。
あなたの例のプロパティについて。
public IEnumerable<location> ListofLocation{get;set;}
ListofLocation
実装List<Location>
以来可能性がありますList<T>
IEnumrable<T>
特定のインターフェイスを実装するオブジェクトを返すと、そのインターフェイスで定義されているパブリック プロパティとメソッドのみを含むオブジェクトが返されます。オブジェクトが公開する他のすべてのメソッドはマスクされます。
これが、オブジェクトがインターフェイスを実装することの意味です。そのオブジェクトはインターフェイスの規約を満たしています。
同様に、同じオブジェクトが、他のインターフェイスを満たすプロパティとメソッドを公開する場合があります。したがって、最初のインターフェイスを満たすために使用したのと同じオブジェクトを使用して、他のインターフェイス タイプのオブジェクトを返すこともできます。
最後に、インターフェイスはさまざまなオブジェクトによって実装できます。これにより、インターフェイスのユーザーとのインターフェイスの契約を満たしながら、インターフェイスの基本的な実装 (つまり動作) を変更できます。