@SkillFoundryIO

If you like this video and want to learn C# in depth from me, visit www.skillfoundry.io! The learning pathway takes you from zero to professional-level coding skills, but be prepared for rigor and depth. It takes over 700 hours to complete, with 80+ exercises and 12+ substantial capstone projects.

@chbi

I rarely subscribe after watching just one video, but this one got me instantly! I've seen so many tutorials, but none of them clicked until I found yours. Amazing job—thank you!

@RogerDunder

That was the easiest most clear explanation i found so far, thank you so much!

@guavavodka

If anyone is curious why it's called dependency inversion, it is because instead of the class depending on lower level details (where the choices come from), it now depends on a HIGHER level abstraction (the interface), thus the dependencies were inverted

@julieyeaeun

Eric you are an AMAZING teacher! 
Sincerely, a former teacher turned programmer :)

@gracicot42

Hi! I'm the creator of the kangaru dependency injection library for C++. What I love about that tutorial is that you teach beginners to do it without a framework. A dependency injection library is only there to automate boilerplate that happens in the wiring code, and not essential for dependency injection.

Another point (for more advanced programmers) is that technically, dependency injection don't require interfaces to work. union (sum types) or enums can also do the trick when you want your component to let users choose its behaviour, but have a closed set of possible behaviour. This still enable testing without introducing virtual function calls when unneeded.

In my case, which might be a C++ only thing, adding virtual functions (any overridable function) strictly only for the purpose of testing is smelly code. I try to keep behaviour choices as closed as possible and thus do my DI with concrete types when possible with the choice of behaviour being values inside those concrete types.

@sllkevin8885

Thank you, all others just explain what DI is and you explained perfectly how to use it.

@SproutSkout

I am sold when you said "We teach people how to code the right way."

@christianfredrickgerman9170

Thanks. You explain DI so clear and simple that even non programmer can understand.

@schmidtlach

I really loved this explanation. So clear and straightforward!:trophy-yellow-smiling:

@NiKo-lh2nq

As soon as I opened the video and saw your face sir, I felt overwhelmed by a sense of trust. I immediately subscribed.

@yojackleon

Hands down, best explanation ever ! thank you Eric

@simonroyjonesuk

Really clear and easy to follow explanation. Thanks very much.

@noobsplain

I have been watching a lot of programming tutorials and this instructor is so very good! Not only the explanation itself, but the cadence is very good.

@RahulSrinivasan-c5s

I had some confusions and now I'm having some Idea about it thanks for this explanation. Do more videos on Dot Net Development

@HiwashiYT

What an amazing explanation for a very confusing topic to beginners like myself, you even added the testing example that so many people mention but never show! Great work, will definitely follow your channel for more content.

@panic_seller

saw this in a Job Description and Now seeing it on Youtube all in less than 2 hours, The gods wanted me to learn this

@Salvotation

I’m learning programming as a hobbyist and to make my work life easier. I am at the stage where I have learnt the basic C# syntax and solving individual problems. Now trying to start learning OOP, this is a really helpful approach to start understanding it’s uses!

@PrettyBlueThings

Excellent explanation!

@stressfreesid9498

I will say you are the great master teacher. You have extra ordinary skills and techniques for teaching lots of blessing from all who watched this videos.