A sample application used to demonstrate SOLID principles.
A class or function should have one and only one reason to change. Has a single responsability.
See SRP example here.
A class or function should be Open for extensions and Closed for modifications. See an OCP example here.
A subclass must be substitutable for their base types. See a LSP example here.
A big interface should be segregatted in small ones. A class that implements an interface should not be force to implement methods it don't use.
See an ISP example here.
High-level modules(business or domain modules) should not depend on low-level modules(logging or file system modules). Both should depend on abstractions. See a DI example here.
The master branch shows the initial code used in the course. It's the starting point. If you want to follow along, you can Fork this repository or download a ZIP with the code. There are separate tags (and branches for that matter) for each of the 5 principles that you can review or download as well. Here are links you can use to jump to these tagged versions in your browser:
Pluralsight course: SOLID Principles for C# Developers.
Some other resources for C# Developers: