I have a problem with using inherited interface. I will explain my problem on example below. Let's say I have Interface IFlyable
:
public interface IFlyable
{
IVerticalSpeed Speed { get; set; }
}
It contains IVerticalSpeed
interface. I created another interface called ISpeed
which inherits from IVerticalSpeed
interface:
public interface ISpeed : IVerticalSpeed
{
int MaxSpeed { get; set; }
}
In next step I created a class Fly
which implement IFlyable
interface:
public class Fly : IFlyable
{
public IVerticalSpeed Speed { get; set; }
}
Everything is fine... but what if I wanted to replace IVerticalSpeed
interface to ISpeed
interface which inherits from IVerticalSpeed
interface?
public class Fly : IFlyable
{
public ISpeed Speed { get; set; }
}
I thought that everything should be fine because my ISpeed
interface is IVertialSpeed
interface + anything that ISpeed
interface contatins. But that is not right. I get error which says: "Fly does not implement interface member IFlyable.Speed (...). Why?