J'ai des classes .net J'utilise l'unité comme IOC pour résoudre nos dépendances. Il essaie de charger toutes les dépendances au début. Y a-t-il un moyen (réglage) dans Unity qui permet de charger une dépendance à l'exécution?Résolution paresseuse de l'injection de dépendance
Répondre
L'unité devrait construire paresseusement des instances, je crois. Voulez-vous dire qu'il charge les assemblages contenant les autres dépendances? Si c'est le cas, vous pouvez jeter un oeil à MEF - il est conçu spécifiquement pour les applications modulaires.
J'ai blogué du code here pour permettre de faire passer les dépendances 'paresseuses' dans vos classes. Il vous permet de remplacer:
class MyClass(IDependency dependency)
avec
class MyClass(ILazy<IDependency> lazyDependency)
Cela vous donne la possibilité de retarder la création effective de la dépendance jusqu'à ce que vous devez l'utiliser. Appelez le lazyDependency.Resolve()
lorsque vous en avez besoin.
est ici la mise en œuvre de ILazy:
public interface ILazy<T>
{
T Resolve();
T Resolve(string namedInstance);
}
public class Lazy<T> : ILazy<T>
{
IUnityContainer container;
public Lazy(IUnityContainer container)
{
this.container = container;
}
public T Resolve()
{
return container.Resolve<T>();
}
public T Resolve(string namedInstance)
{
return container.Resolve<T>(namedInstance);
}
}
vous devez vous inscrire dans votre conteneur pour pouvoir l'utiliser:
container.RegisterType(typeof(ILazy<>),typeof(Lazy<>));
Il y a une solution encore mieux - prise en charge native pour Lazy <T> et IEnumerable < Lazy <T> > dans l'Unity 2.0. Vérifiez-le here.
Ne pas oublier cette ligne 'unityContainer.AddNewExtension
- 1. Résolution de dépendance Maven
- 2. Résolution de la dépendance en python entre les modules
- 3. installer la solution de blocage manuelle sans résolution de dépendance manuelle
- 4. L'évaluation CASE normale ("paresseuse") de CASE?
- 5. String.format avec évaluation paresseuse
- 6. Évaluation paresseuse dans SSRS
- 7. Résolution de méthode d'extension
- 8. résolution de conflit de masse
- 9. qu'est-ce que l'allocation paresseuse?
- 10. Maven questions de dépendance
- 11. erreur de résolution cadre fédérateur
- 12. Flex: Applications de résolution croisée
- 13. Résolution de page JSP/HTML
- 14. Pourquoi l'instanciation paresseuse de MessageResourcesFactory dans Struts 1.2.7?
- 15. Bibliothèques d'injection de dépendance Ruby
- 16. jquery validation de la dépendance
- 17. Injection de dépendance pour Silverlight?
- 18. Résolution des problèmes de débordement de tas
- 19. résolution de nom de réseau Windows
- 20. BuildManager Résolution de l'héritage de page
- 21. Problème de conception de logiciel: dépendance circulaire
- 22. Propriétés de dépendance de chaînage avec MVVM
- 23. Dépendance de DependencyObject et de DependencyProperty
- 24. Injection de dépendance de services Windows
- 25. Utilisation correcte de la propriété de dépendance
- 26. (Visual) Analyse de dépendance de projet C++
- 27. Propriétés de dépendance de validation Silverlight
- 28. Rapport de dépendance de l'assemblage Asp.net
- 29. Diagramme de dépendance de projet dans Visio
- 30. WPF Aero Verre Réglage de la résolution de la résolution d'erreur
Ou Prism (Composite Application Guidance): http://compositewpf.codeplex.com –