Considera questo esempio:
public class SimpleValidator
{
public virtual bool InRange(int x)
{
return x >= 6 && x <=12;
}
}
public class OffsetAwareValidator : SimpleValidator
{
int offset = 0;
public OffsetAwareValidator(int offset)
{
this.offset = offset;
}
public override bool InRange(int x)
{
var num = x + offset;
return num >= 6 && num <= 12;
}
}
Ora, ovviamente, new OffsetAwareValidator(0)
avrà lo stesso identico comportamento di SimpleValidator. Tuttavia, quando l'offset non è zero, alcuni valori che superano la convalida in OffsetAwareValidator
non lo passerebbero in SimpleValidator
.
Questa è una violazione di LSP?