Я понимаю, что дисперсия типа используется в следующих случаях:
-
Если общий тип
Gимеет параметр типаT1, который появляется как тип аргумента методаG, тогдаGможет быть контравариантным вT1. -
Если
Gимеет параметр типаT2, который появляется как тип любого возвращаемого значения метода (или ctor)G, тоGможет быть ковариантным вT2.
Что делать, если я могу заменить, должен быть в предложениях выше? Есть ли другой случай совместного и контра-варианта использования? Когда и почему вы делаете свои типы совпадающими и противоречивыми?