J'utilise un conteneur Autofac pour toute la durée de vie de mon application, mais je souhaite disposer des composants moi-même.Conteneur Autofac-externe?
IE si je builder.RegisterType<SomeType>()
, je ne veux pas le conteneur pour garder les références de SomeType
qui gardera en vie, même si ceux non référencés nulle part ailleurs (si RegisterInstance
est utilisé OTOH, puis bien sûr le récipient doit conserver une référence à le singleton).
Je peux voir que je peux faire builder.RegisterType<SomeType>().ExternallyOwned()
qui résout mon problème pour un type, mais je ne veux pas l'écrire pour chaque type, et plus important encore, j'utilise également builder.RegisterSource(new AnyConcreteTypeNotAlreadyRegisteredSource());
qui ne me donne pas la possibilité d'utiliser ExternallyOwned
.
Existe-t-il un moyen de spécifier "ExternallyOwned" pour le conteneur entier? Ou, pour le dire autrement, dites au conteneur de désactiver toute la fonction de disposition et de ne pas conserver de références pour les objets dont il n'a pas besoin?
Je considérerais les méthodes d'extension sur ContainerBuilder afin que vous puissiez écrire builder.RegisterExternalType() et obtenir ce que vous vouliez sans appeler explicitement deux méthodes partout. –
Mithon
Ce n'est pas assez bon, car comme je l'ai dit, j'utilise aussi 'builder.RegisterSource (new AnyConcreteTypeNotAlreadyRegisteredSource());' – tzachs
Ah. Je vois. J'ai raté cette partie. Ensuite, il vous reste à écrire votre propre source d'enregistrement, je suppose. Et honnêtement, si vous regardez à quel point cette source est mince, ce n'est pas vraiment un gros travail. :) – Mithon