SOLID Design Principles in C#