Je n'arrive pas à trouver comment mettre StructureMap en cache une instance autre que celle par défaut. Je peux mettre en cache l'instance par défaut avec le code comme ceciUtilisation de StructureMap pour mettre en cache une instance nommée
ForRequestedType<ISession>()
.CacheBy(InstanceScope.HttpContext)
.TheDefault.Is.ConstructedBy(() => ObjectFactory.GetInstance<ISessionFactory>().OpenSession());
qui fonctionne comme prévu. Et je peux créer une instance nommée fin
InstanceOf<User>().Is.ConstructedBy(() => someAwesomeConstructor()).WithName("CurrentUser");
Mais je voudrais vraiment mettre en cache « CurrentUser » par session, mais .CacheBy() existe seulement dans CreatePluginFamilyExpression <> et la seule façon que je peux dire pour obtenir de CreatePluginFamilyExpression <> à IsExpression <> est par la propriété TheDefault, ce qui me force à créer un défaut, ce que je ne veux pas.
Dans ce cas, c'est parfaitement bien. J'ai seulement une instance "spéciale", donc avoir seulement une portée de cache n'est pas un problème. Je ne voulais tout simplement pas d'une instance par défaut car cela risquerait de dérouter quelqu'un s'il mettait un utilisateur dans un constructeur et faisait soudain sortir l'utilisateur actuel de nulle part. –