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
Prochaine révision
Révision précédente
developpement:dotnet:structuremap [2017/10/26 16:52] sgariepydeveloppement:dotnet:structuremap [2023/07/03 20:21] (Version actuelle) – créée sgariepy
Ligne 5: Ligne 5:
 Cette page est une prise de notes Cette page est une prise de notes
  
 +
 +Alternative : [[https://autofac.org/|Autofac]]
 ====== Exemple avec ASP.NET Core ====== ====== Exemple avec ASP.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.+Installer le package StructureMap:
  
-Dans le ''Registry'', nous avons:+  <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 Frameworkmais 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> <code csharp>
-public class ServiceRegistry : StructureMap.Registry+public interface ICarsProviderService
 { {
-    public ServiceRegistry() +    Dictionary<Guid, CarDtoGetCars();
-    { +
-        this.For<ICarsProviderService>().Add<CarsProviderService>().Named("byDictionary").Singleton(); +
- +
-        this.For<CarsProviderService>().Use<CarsProviderService>().Ctor<ICarsProviderService>().IsNamedInstance("byDictionary"); +
-    }+
 } }
 </code> </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:
  
-====== Nombre d'instances ======+<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.1509029563.txt.gz · Dernière modification : 2022/02/02 00:43 (modification externe)