5
次のコードでは、一般的なケースでコンパイルエラーが発生するのはなぜですか? 共分散型と汎用型
abstract class Test<TItem> where TItem : IFoo
{
public IEnumerable<IFoo> Foos { get; set; }
public void Assign()
{
Foos = GetSomeSpecificList(); // works as expected
Foos = GetSomeGenericList(); // compile error?
}
protected abstract ICollection<TItem> GetSomeGenericList();
protected abstract ICollection<Foo> GetSomeSpecificList();
}
interface IFoo
{
}
class Foo : IFoo
{
}
は、私が何かをしないのですか、それはすべてのTItemはIFooでなければならないことを与えられていないと、この構築物は型の安全性に違反するので、それは不可能ですか?