次のコンパイルを行わなくても可能です。
- ジェネリック
IFooCollection
にする - 明示的に実装
IFooCollection.Items
しFooCollection
、明示的なキャストを実行します。
public interface IFoo
{
}
public interface IFooCollection
{
IEnumerable<IFoo> Items { get; }
}
public class FooCollection<T> : IFooCollection where T : IFoo
{
public IEnumerable<T> Items { get; set; }
}
2番目のソリューション(インターフェイスを明示的に実装する)には十分満足していますが、を実装する必要があることを指定する一般的な制約がある場合のようにキャストする必要がある理由を理解したいと思いT
ます。IFoo
T
IFoo