Outils pour utilisateurs

Outils du site


developpement:dotnet:structuremap

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
developpement:dotnet:structuremap [2023/07/03 20:21] – supprimée sgariepydeveloppement:dotnet:structuremap [2023/07/03 20:21] (Version actuelle) – créée sgariepy
Ligne 1: Ligne 1:
 +====== StructureMap ======
 +
 +[[http://structuremap.github.io/documentation/|Documentation du StructureMap]]
 +
 +Cette page est une prise de notes
 +
 +
 +Alternative : [[https://autofac.org/|Autofac]]
 +====== Exemple avec ASP.NET Core ======
 +
 +Installer le package StructureMap:
 +
 +  <PackageReference Include="StructureMap" Version="4.5.2" />
 +
 +  PM> Install-Package StructureMap
 +
 +Le package ''StructureMap.Microsoft.DependencyInjection'' peut également être utilisé.
 +
 +Le package ''StructureMap'' (4.5.2) est surtout utilisé pour .NET Framework, mais fonctionne quand même avec .NET Core.
 +
 +Créer un service quelconque.  Ce service doit avoir son interface.  Par exemple, on a un service ''CarsProviderService'' qui implémente ''ICarsProviderService'' Nous avons la méthode ''GetCars()'' dans ce service qui retourne une liste de voitures avec la marque, le modèle, l'année, etc.
 +
 +<code csharp>
 +public interface ICarsProviderService
 +{
 +    Dictionary<Guid, CarDto> GetCars();
 +}
 +</code>
 +
 +
 +Dans ''Startup.cs:ConfigureServices()'', on a simplement à ajouter :
 +
 +<code csharp>
 +services.AddSingleton<ICarsProviderService, CarsProviderService>();
 +</code>
 +
 +Ensuite, dans le contrôleur :
 +
 +<code csharp>
 +private readonly ICarsProviderService _carsProviderService;
 +
 +public CarsController(ICarsProviderService carsProviderService)
 +{
 +    this._carsProviderService = carsProviderService;
 +}
 +</code>
 +
 +Et on peut utiliser le service:
 +
 +<code csharp>
 +// GET: api/cars
 +[HttpGet]
 +public IEnumerable<CarDto> Get()
 +{
 +    return this._carsProviderService.GetCars().Select(x => x.Value);
 +}
 +</code>
 +====== Registres ======
 +
 +Les ''Registry'' servent à //enregistrer// des services.  Voir la [[http://structuremap.github.io/registration/registry-dsl/|documentation sur les Registry]].
 +
 +
 +<code csharp>
 +public class SomethingRegistry : StructureMap.Registry
 +{
 +    public SomethingRegistry()
 +    {
 +        this.For<ISomeService>().Use<ConcreteSomeService>().Singleton();
 +        
 +        this.For<ICarService>().Add<IVolvoCarService>().Named("volvo");
 +        this.For<ICarService>().Add<IFordCarService>().Named("ford");  
 +        
 +        this.For<Consumer>().Use<Consumer>().Ctor<ICarService>().IsNamedInstance("volvo");      
 +    }
 +}
 +</code>
 +
 +
 +
 +
  
developpement/dotnet/structuremap.1688408500.txt.gz · Dernière modification : 2023/07/03 20:21 de sgariepy