Por que o conceito de "Covariância" e "Contravariância" são aplicáveis ao implementar os métodos de uma interface?
O caso de uso é algo parecido com isto:
public class SomeClass : ICloneable
{
// Some Code
// Implementing interface method
public object Clone()
{
// Some Clonning Code
}
}
Agora minha pergunta éPor que não é possível usar "SomeClass (como é derivado do objeto)" como um tipo de retorno do método Clone () se considerarmos os Funda's of Covariance and Contravariance?
Alguém pode me explicar a razão por trás desta implementação da Microsoft ????