Files
Discord.Net/docs/faq/basics/dependency-injection.md
Nora 473b13e75f Improve and modernize docs. (#2882)
* Add proper home landing page.

* Improve landing page considerably.

* Add navbar library name.

* Fix css rules.

* Update getting started images.

* Change favicon to the navbar's logo.

* Tiny change to docs index.

* Add title to home landing page.

* Tweak build overrides faq page.

* Fix FAQ article titles and headers.

* Fix FAQ article titles and headers.

* Replace channel 9 with the official .net course.
2024-03-18 20:39:43 +03:00

47 lines
1.9 KiB
Markdown

---
uid: FAQ.Basics.DI
title: Questions about Dependency Injection
---
# Dependency Injection-related Questions
In the following section, you will find common questions and answers
to utilizing dependency injection with @Discord.Commands and @Discord.Interactions, as well as
common troubleshooting steps regarding DI.
## What is a service? Why does my module not hold any data after execution?
In Discord.Net, modules are created similarly to ASP.NET, meaning
that they have a transient nature; modules are spawned whenever a
request is received, and are killed from memory when the execution
finishes. In other words, you cannot store persistent
data inside a module. Consider using a service if you wish to
workaround this.
Service is often used to hold data externally so that they persist
throughout execution. Think of it like a chest that holds
whatever you throw at it that won't be affected by anything unless
you want it to. Note that you should also learn Microsoft's
implementation of [Dependency Injection] \([video]) before proceeding.
A brief example of service and dependency injection can be seen below.
[!code-csharp[DI](samples/DI.cs)]
[Dependency Injection]: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection
[video]: https://www.youtube.com/watch?v=QtDTfn8YxXg
## Why is my Command/Interaction Service complaining about a missing dependency?
If you encounter an error similar to `Failed to create MyModule,
dependency MyExternalDependency was not found.`, you may have
forgotten to add the external dependency to the dependency container.
For example, if your module, `MyModule`, requests a `DatabaseService`
in its constructor, the `DatabaseService` must be present in the
[IServiceProvider] when registering `MyModule`.
[!code-csharp[Missing Dependencies](samples/missing-dep.cs)]
[IServiceProvider]: xref:System.IServiceProvider