<t>TL;DR<br/>
<br/>
Transient objects are always different; a new instance is provided to<br/>
every controller and every service.<br/>
<br/>
Scoped objects are the same within a request, but different across<br/>
different requests.<br/>
<br/>
Singleton objects are the same for every object and every request.<br/>
<br/>
For more clarification, this example from .NET documentation shows the difference:<br/>
<br/>
To demonstrate the difference between these lifetime and registration options, consider a simple interface that represents one or more tasks as an operation with a unique identifier, OperationId. Depending on how we configure the lifetime for this service, the container will provide either the same or different instances of the service to the requesting class. To make it clear which lifetime is being requested, we will create one type per lifetime option:<br/>
<br/>
using System;<br/>
<br/>
namespace DependencyInjectionSample.Interfaces<br/>
{<br/>
public interface IOperation<br/>
{<br/>
Guid OperationId { get; }<br/>
}<br/>
<br/>
public interface IOperationTransient : IOperation<br/>
{<br/>
}<br/>
<br/>
public interface IOperationScoped : IOperation<br/>
{<br/>
}<br/>
<br/>
public interface IOperationSingleton : IOperation<br/>
{<br/>
}<br/>
<br/>
public interface IOperationSingletonInstance : IOperation<br/>
{<br/>
}<br/>
}<br/>
<br/>
```<br/>
<br/>
We implement these interfaces using a single class, `Operation`, that accepts a GUID in its constructor, or uses a new GUID if none is provided:<br/>
<br/>
```<br/>
using System;<br/>
using DependencyInjectionSample.Interfaces;<br/>
namespace DependencyInjectionSample.Classes<br/>
{<br/>
public class Operation : IOperationTransient, IOperationScoped, IOperationSingleton, IOperationSingletonInstance<br/>
{<br/>
Guid _guid;<br/>
public Operation() : this(Guid.NewGuid())<br/>
{<br/>
<br/>
}<br/>
<br/>
public Operation(Guid guid)<br/>
{<br/>
_guid = guid;<br/>
}<br/>
<br/>
public Guid OperationId => _guid;<br/>
}<br/>
}<br/>
<br/>
```<br/>
<br/>
Next, in `ConfigureServices`, each type is added to the contain<br/>
<br/>
*(Réponse tronquée)*</t>