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?
 
     
     
     
     
    