Да, это так.
Если бы это было разрешено, вы могли бы поместить любой объект в эту коллекцию, если он реализовал интерфейс IFoo
, но это не было бы безопасно для коллекции.
Позвольте мне проиллюстрировать:
var b = new Bars();
CollectionOf<IFoo> bars = b;
bars.Add(Dummy); // implements IFoo, but does not descend from Bar
На данный момент, что содержит b
? Объект типа Dummy
? Это было бы плохо, и, следовательно, это недопустимо.