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?
interface IVerticalSpeed {}is enough.Flyno longer implementsIVerticalSpeedas a property as denoted by 'IFlyable'