An open API service indexing awesome lists of open source software.

https://github.com/rezatajari/solid-principles

A hands-on learning lab for mastering the SOLID principles in C#. Built with a focus on real-world analogies, problem-first thinking, and challenge-driven development. Each principle is isolated in its own section and demonstrated via practical code examples.
https://github.com/rezatajari/solid-principles

clean-code csharp dependency-injection design-principles dotnet object-oriented-design oop software-architecture software-engineering solid-principles

Last synced: 5 months ago
JSON representation

A hands-on learning lab for mastering the SOLID principles in C#. Built with a focus on real-world analogies, problem-first thinking, and challenge-driven development. Each principle is isolated in its own section and demonstrated via practical code examples.

Awesome Lists containing this project

README

          

# SOLID Principles in C#

Welcome to my SOLID training repository — designed for practical learning and real-world thinking.
Each folder is dedicated to one SOLID principle and contains:

- A real-world analogy (e.g. banking, reporting, device control)
- A challenge to implement
- A C# solution applying OOP tools (interfaces, abstractions, etc.)
- My own notes and decisions

---

## Principles Covered

| Principle | Description | Documentation |
|----------|-------------|----------------|
| S - SRP | Single Responsibility: Each class does one thing well | [Documentation](https://github.com/rezatajari/SOLID-Principles/blob/master/doc/SRP.md) |
| O - OCP | Open/Closed: Open for extension, closed for modification | [Documentation](https://github.com/rezatajari/SOLID-Principles/blob/master/doc/OCP.md) |
| L - LSP | Liskov Substitution: Derived types must be usable as base types | [Documentation](https://github.com/rezatajari/SOLID-Principles/blob/master/doc/LSP.md) |
| I - ISP | Interface Segregation: No client should depend on what it doesn't use | [Documentation](https://github.com/rezatajari/SOLID-Principles/blob/master/doc/ISP.md) |
| D - DIP | Dependency Inversion: High-level modules shouldn't depend on low-level modules | [Documentation](https://github.com/rezatajari/SOLID-Principles/blob/master/doc/DIP.md) |

---

### Lead Link

For a complete overview of all SOLID principles, visit the [SOLID Overview](https://github.com/rezatajari/SOLID-Principles/blob/master/doc/SOLID%20Overview.md).

This repo is not about copying answers.
It's about **thinking like a software designer**:
- Model real-life problems
- Apply core OOP patterns
- Practice reasoning before coding