15 votes

Arguments du constructeur de StructureMap

Je suis nouveau dans la structureMap. Comment puis-je définir les arguments du constructeur pour la classe suivante avec une configuration fluide ? Merci

  public BlobContainer(CloudStorageAccount account
              , string containerName
              , string contentType
              , BlobContainerPermissions blobContainerPermissions)
  {

  }

19voto

PHeiberg Points 15909

Pour les types primitifs, vous devez suivre la réponse de @ozczecho :

For<BlobContainer>()
  .Use<BlobContainer>()
  .Ctor<string>("containerName").Is("theContainerName")
  .Ctor<string>("contentType").Is("theContentType");

à condition que les valeurs soient connues au moment de l'enregistrement. Vous pouvez également procéder de cette manière pour les types non primitifs, mais vous perdez la flexibilité que le conteneur vous offre de cette façon. Il est préférable de définir une instance par défaut ou nommée et de l'utiliser à la place (le conteneur résoudra automatiquement les instances par défaut pour vous). En définissant des instances par défaut, vous pouvez facilement changer toutes les dépendances d'un type dans votre application en modifiant une seule inscription.

For<CloudStorageAccount>().Use<TheCloudStorageAccountType>();

Si une dépendance est un type concret avec un constructeur ayant des dépendances qui sont connues de structuremap, vous n'avez pas besoin de l'enregistrer avec le conteneur, il sera automatiquement résolu.

Ainsi, si CloudStorageAccount est une classe concrète, il suffit d'enregistrer ses dépendances dans Structure Map.

3voto

ozczecho Points 3575
        For<BlobContainer>()
            .HybridHttpOrThreadLocalScoped()
            .Use<BlobContainer>()
            .Ctor<CloudStorageAccount >("account").Is(...)
            .Ctor<string >("containerName").Is(...)
            .Ctor<string >("contentType").Is(...)
            .Ctor<BlobContainerPermissions >("blobContainerPermissions").Is(...);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X