Урок 1.00:02:35
Welcome
Урок 2.00:01:50
What will you learn in this course?
Урок 3.00:01:22
Who is this course for and prerequisites
Урок 4.00:06:48
The problem with dependencies
Урок 5.00:05:14
Why Dependency injection is necessary
Урок 6.00:10:26
A practical example of the dependency problem
Урок 7.00:04:25
A less obvious example of a Dependency Injection use-case
Урок 8.00:01:12
Dependency injection benefits past testability
Урок 9.00:01:52
Injecting Classes vs Abstract classes vs Interfaces
Урок 10.00:01:22
So do you have to do all that manually??
Урок 11.00:01:10
Section recap
Урок 12.00:00:39
Introduction
Урок 13.00:06:35
The simplest setup with Dependency Injection
Урок 14.00:02:01
The ServiceCollection
Урок 15.00:01:47
The ServiceProvider
Урок 16.00:05:29
All of the above, in an API
Урок 17.00:04:31
The different types of dependency lifetimes
Урок 18.00:02:09
The Transient lifetime
Урок 19.00:02:09
The Singleton lifetime
Урок 20.00:02:32
The Scoped lifetime
Урок 21.00:03:39
GetService vs GetRequiredService
Урок 22.00:03:32
Generic-based registration vs implementation-based registration
Урок 23.00:06:05
Registration approaches
Урок 24.00:02:10
The Startup.cs and changes after .NET 6
Урок 25.00:01:51
Third party libraries
Урок 26.00:01:10
Section recap
Урок 27.00:00:22
Resolving dependencies in different project types
Урок 28.00:01:00
Resolving dependencies from the constructor
Урок 29.00:01:28
Resolving dependencies from the method
Урок 30.00:01:18
Resolving dependencies in a console setup
Урок 31.00:01:10
Resolving dependencies from the HttpContext
Урок 32.00:02:43
Resolving dependencies from Action Filters as Attributes
Урок 33.00:02:43
Resolving dependencies from Service Filters
Урок 34.00:02:33
Resolving dependencies from Middleware
Урок 35.00:03:14
Resolving dependencies in Minimal APIs
Урок 36.00:01:29
Resolving dependencies in Razor Views & Pages
Урок 37.00:01:01
Resolving dependencies in Blazor
Урок 38.00:01:17
Resolving dependencies in gRPC Services
Урок 39.00:02:39
Resolving dependencies in Hosted Services
Урок 40.00:01:55
Resolving dependencies in service registration
Урок 41.00:00:32
Section recap
Урок 42.00:05:01
Do you need an interface for everything?
Урок 43.00:02:32
Choosing the right dependency lifetime
Урок 44.00:07:44
Dependency resolving issues and limitations
Урок 45.00:02:39
Registering open generics
Урок 46.00:03:23
Registering multiple interface implementations
Урок 47.00:04:23
The ServiceDescriptor
Урок 48.00:04:23
Add vs TryAdd
Урок 49.00:03:32
TryAddEnumerable
Урок 50.00:05:48
Replacing dependencies
Урок 51.00:03:23
Cleaning up service registration
Урок 52.00:01:00
Section recap
Урок 53.00:05:43
Creating a custom scope
Урок 54.00:02:49
The service locator anti-pattern
Урок 55.00:20:38
When service locator makes sense
Урок 56.00:03:15
Avoiding capturing dependencies
Урок 57.00:03:19
Avoiding multiple service providers
Урок 58.00:07:12
Creating decorators
Урок 59.00:03:56
The future of dependency injection
Урок 60.00:00:48
Section recap
Урок 61.00:01:35
What is Scrutor?
Урок 62.00:03:59
Registering service decorators
Урок 63.00:08:27
Surprise optional refactoring lecture
Урок 64.00:13:10
Service registration by scanning
Урок 65.00:03:29
Interface marking
Урок 66.00:03:15
Attribute marking
Урок 67.00:02:20
Namespace filtering
Урок 68.00:02:48
Using the ServiceDescriptor attribute
Урок 69.00:02:25
Using RegistrationStrategies
Урок 70.00:01:53
Potential pitfalls
Урок 71.00:00:47
Section recap
Урок 72.00:01:26
Why should we even bother?
Урок 73.00:02:58
The design
Урок 74.00:19:58
The implementation
Урок 75.00:10:37
Extending the main implementation
Урок 76.00:00:34
Section recap
Урок 77.00:00:33
Course conclusion