interface IAlpha
{
IBeta BetaProperty { get; set; }
}
interface IBeta
{
}
class Alpha : IAlpha
{
public Beta BetaProperty { get; set; } // error here
}
class Beta : IBeta
{
}
'InterfaceTest.Alpha' does not implement interface member 'InterfaceTest.IAlpha.BetaProperty'. 'InterfaceTest.Alpha.BetaProperty' cannot implement 'InterfaceTest.IAlpha.BetaProperty' because it does not have the matching return type of 'InterfaceTest.IBeta'.
My question is why is a property implementation restricted to the very same type. Why can't I use the derived type instead?