Design Patterns: Liskov Substitution Principle Explained Practically in C# (The L in SOLID)