solid.practices Practice of SOLID Principles for C# Developers Single-responsibility-principle Open-closed-principle Liskov-substitution-principle Interface-segregation-principle Dependency-inversion-principle