Witam mam pytanie odnośnie do Covariance and Contravariance w C#.
Covariance chodzi o zmienianie typu referencji instancji klasy podrzędnej na typ referencji klasy nadrzędnej z bardziej określonego na bardziej ogólny ?
Tak jak w tym przykładzie.
class Pojazd
{
public int rok_produkcji { get; set; }
}
class Rower : Pojazd
{
public string kolor_ramy { get; set; }
}
class Program
{
static void Main(string[] args)
{
Rower rower = new Rower();
Pojazd pojazd = rower;
Console.ReadKey();
}
}
Contravariance chodzi o przypisanie referencji do obiektu z typu bardziej ogólnego do typu bardziej określonego, ale można to zrobić tylko przy argumencie do metody ?
interface Contravariance<in T>
{
void rok(T s);
}
class Pojazd<T> : Contravariance<T>
{
public void rok(T s)
{
}
}
class Program
{
static void Main(string[] args)
{
Contravariance<string> poj = new Pojazd<object>();
Console.ReadKey();
}
}