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.
- Host: GitHub
- URL: https://github.com/rezatajari/solid-principles
- Owner: rezatajari
- Created: 2025-05-03T11:37:11.000Z (8 months ago)
- Default Branch: master
- Last Pushed: 2025-05-27T06:08:08.000Z (7 months ago)
- Last Synced: 2025-06-11T14:44:10.130Z (6 months ago)
- Topics: clean-code, csharp, dependency-injection, design-principles, dotnet, object-oriented-design, oop, software-architecture, software-engineering, solid-principles
- Language: C#
- Homepage:
- Size: 39.1 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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