C# のポリモーフィズムに問題があります。インターフェイスを実装するオブジェクトがありますが、オブジェクトのコレクションをインターフェイスのコレクションとして表現できません。これは、ポリモーフィズムに対する私の理解に反しています。だから私はどこが間違っているのだろうと思っていました。
[TestFixture]
class Tester
{
[Test]
public void Polymorphism()
{
var list = new List<Foo> {new Foo {Name = "Item"}};
Assert.That(list, Is.InstanceOf<IList>());
Assert.That(list[0], Is.InstanceOf<Foo>());
Assert.That(list[0], Is.InstanceOf<IBar>());
// why are the rest true but this false?
Assert.That(list, Is.InstanceOf<IList<IBar>>());
}
}
internal interface IBar
{
}
internal class Foo : IBar
{
public string Name { get; set; }
}