public interface IOInitializable<in ItemType>
What does contravariant: converting from narrower (circle) to wider (Shapes)
mean for an interface?
What are the consequence and the dangers?
I’ve read http://msdn.microsoft.com/en-us/library/dd469484.aspx but this does not help me.
I’d recommend reading this explaination from Tomas:
It boils down to the fact that if you have a method call that is passing a number of “Circles”, you can use a function that accepts a number of “Shapes” as long as it doesn’t return a “Shape” (because that may or may not be a “Circle”).