Ceci est l'équivalent de ce que je suis en train de créer avec StructureMap:StructureMap Question
new ChangePasswordWithNotificationAndLoggingService(
new ChangePasswordService(
new ActiveDirectoryRepository(new ActiveDirectoryCredentials()),
new TokenRepository("")),
new EmailNotificationService(new PasswordChangedNotification(new UserAccount())),
new LoggingService());
C'est ce que j'ai en ce moment:
ForRequestedType<IChangePasswordService>()
.TheDefault.Is.ConstructedBy(() =>
new ChangePasswordService(DependencyRegistrar.Resolve<IActiveDirectoryRepository>(),
DependencyRegistrar.Resolve<ITokenRepository>()))
.EnrichWith<IChangePasswordService>(x =>
new ChangePasswordWithNotificationAndLoggingService(x,
DependencyRegistrar.Resolve<INotificationService>(),
DependencyRegistrar.Resolve<ILoggingService>()));
J'ai besoin de passer l'UserAccount à l'INotificationService ... ne peut pas le comprendre.
J'ai essayé ceci: DependencyRegistrar.With (nouveau UserAccount {Nom d'utilisateur = "test"});
Pas de chance ... UserAccount s'avère toujours nul. Je n'ai pas à tout faire avec StructureMap, je suis ouvert à toutes les suggestions.
C'est ce que je travaille actuellement:
public static IChangePasswordService ChangePasswordService(UserAccount userAccount)
{
return new ChangePasswordWithNotificationService(
new ChangePasswordService(ActiveDirectoryRepository(), TokenRepository()),
new EmailNotificationService(new PasswordChangedNotification(userAccount)));
}
Je ne pense pas que ça va marcher parce que je dois être en mesure de passer l'objet UserAccount au PasswordChangedNotification. Il n'est pas clair la façon dont j'ai montré le résultat final en haut, mais le nouveau UserAccount() doit être passé pour créer le IChangePasswordService. En ce moment je l'ai fonctionné, mais pas en utilisant StructureMap pour tout ... Je vais éditer le haut pour refléter ce que j'utilise actuellement pour faire le travail. – derans
Au moment de la récupération (pas l'heure d'enregistrement), vous pouvez faire: Container.With (new UserAccount {Username = "test"}). GetInstance(); –
J'ai essayé celui-là aussi, mais avec la configuration actuelle de IChangePasswordService dans le registre, cela ne fonctionne pas. UserAccount est toujours l'instance par défaut de UserAccount. – derans