Develop a basic IoC container.
Create a class library and corresponding unit tests for IoC container. IoC - inversion of control which is related to a concept called "Dependency injection". Dependency injection is a technique whereby one object (or static method) supplies the dependencies of another object.
- resolve concrete classes (without registration)
- register interfaces implementation
- dependecnies can have one constructor with no, one and many parameters
- all scenarios should be covered with unit tests (xUnit)
- singleton registration
- properties injection (with [Inject] attribute)
- deferred Resolution with Lazy (and corresponding Func)
- circular dependencies check on registration
- dependencies registration from file (can be XML or JSON or any cusom format)
- injection of simple types, such as integers, strings etc.
- SOLID lecture
- Reflection lecture
- https://stackoverflow.com/questions/1638919/how-to-explain-dependency-injection-to-a-5-year-old
- https://github.com/ninject/Ninject
- https://www.pluralsight.com/courses/dependency-injection-on-ramp
- Dependency Injection with Unity (has much more material, you can skip parts about ASP.NET MVC) - https://download.microsoft.com/download/4/d/b/4dbc771d-9e24-4211-adc5-65812115e52d/dependencyinjectionwithunity.pdf
- Dependency Injection in .NET, Mark Seeman - https://www.manning.com/books/dependency-injection-in-dot-net