3

以下のインターフェースと具象クラスがあります。

次のエラーが表示されます。

「DAL.Model.Audit.Categories」は「DAL.Interfaces.IAudit.Categories」を実装できません。「System.Collections.Generic.IEnumerable」の一致する戻り値の型がないためです。

ここで私が間違っていることを誰か説明してもらえますか?

public interface IAudit
{
    IEnumerable<ICategory> Categories { get; set; }
    IEnumerable<IAuditAnswer> Answers { get; set; }
}

public class Audit : IAudit
{
    public List<ICategory> Categories { get; set; }
    public List<IAuditAnswer> Answers { get; set; }
}
4

3 に答える 3

6

インターフェイスを実装するときは、契約を尊重する必要があります。

public class Audit : IAudit
{
    public IEnumerable<ICategory> Categories { get; set; }
    public IEnumerable<IAuditAnswer> Answers { get; set; }
}

インターフェイスでは 2 つのプロパティが として定義されているIEnumerable<T>ため、実装クラスでは の代わりに同じタイプを使用する必要がありますList<T>

于 2012-12-08T14:36:51.150 に答える
2

この非常に役立つ記事を読んで、その理由を知ることができます。

ジェネリック型の差異 (C# プログラミング ガイド)

残念ながら、厳密に型指定されたコレクションには独自の欠点があります。

于 2012-12-08T14:46:48.920 に答える
1

これが具体的に機能しない理由IListは、 がより特化されているためですIEnumerable

あなたの頭の中であなた (私は推測します) をIList実装すると思ったIEnumerableので、「なぜそれを使用できないのですか?」本当の答えは、このスタックオーバーフローの応答にあります。

于 2012-12-08T16:28:59.000 に答える