Puis-je tester si un type a été enregistré dans un conteneur Unity sans appeler de résolution et intercepter l'exception?Test si un Type a été enregistré dans Unity
Répondre
Unity 2.0 aura une méthode IsRegistered
que vous pouvez utiliser pour déterminer si un type a été enregistré dans le conteneur.
La version bêta1 de Unity 2.0 est disponible sur Codeplex à partir du 10 février. Voir les notes de version et téléchargez-le ici; http://unity.codeplex.com/wikipage?title=Unity2%20Beta1
MISE À JOUR:
téléchargé et testé Unity 2.0 beta 1 le 27 février 2010, et il est de loin la production encore prêt. Si vous utilisez Unity 1.2 aujourd'hui, vous devrez faire un travail important pour obtenir Unity 2.0 en raison de l'interface incomplète (?) IUnityContainer. Donc, si vous voulez avoir la méthode de travail isRegistered aujourd'hui, vous pouvez faire une méthode d'extension comme ceci:
public static class UnityContainerExtensions
{
public static bool IsRegistered<T>(this IUnityContainer container)
{
try
{
container.Resolve<T>();
return true;
}
catch
{
return false;
}
}
}
Notez que je ne suis pas ici en utilisant ResolveAll
. La raison est que ResolveAll
ne reviendra pas la valeur par défaut (sans nom) l'enregistrement comme indiqué dans la documentation Unity:
Cette méthode est utile si vous avez enregistré plusieurs types avec le même type, mais des noms différents. Sachez que cette méthode ne renvoie PAS une instance pour l'enregistrement par défaut (sans nom).
Votre seule autre option (actuellement) est d'utiliser ResolveAll<T>()
et d'énumérer les résultats.
Soupçonné ainsi, merci – johnc
- 1. Unity XML Config Test
- 2. Déterminer si un paramètre nommé a été passé
- 3. Comment vérifier si une méthode privée a été appelée avec l'argument attendu dans le test unitaire?
- 4. Déterminez si une connexion a été rompue
- 5. Y a-t-il TryResolve dans Unity?
- 6. Déterminez si un événement a déjà été attaché
- 7. Déterminer si StructureMap a un type spécifique configuré?
- 8. Comment savoir si un formulaire a été modifié
- 9. Détecter si un formulaire a été soumis avec PHP
- 10. Déterminer si un message sur tcp a été livré
- 11. XSLT: Paramètre de test pour savoir si elle a été définie
- 12. Test pour voir si le contenu ContentPlaceHolder a été remplacé par une page enfant?
- 13. Vérifiez si l'enregistrement a été détruit juste dans des rails
- 14. Y a-t-il un moyen de savoir si un email a été ouvert?
- 15. python, comment dire quel type de obj a été retourné
- 16. Comment déterminer si itérateur de sortie a été modifié
- 17. Vérifiez que l'un ou l'autre méthode a été invoquée dans un test unitaire
- 18. Comment déterminer par programme si un contrôle ActiveX a été installé et si celui-ci ou ActiveX dans son ensemble a été désactivé?
- 19. Dans CakePHP, comment pouvez-vous déterminer si un champ a été modifié dans une action d'édition?
- 20. Comment puis-je savoir si une autre application a enregistré un canal IPC Remoting?
- 21. fichier batch Windows - vérifier si le fichier a été modifié
- 22. xsl: comment dire si une variable a été déclarée
- 23. Comment puis-je vérifier si une structure a été initialisée?
- 24. Vérifier si le contenu a déjà été envoyé en PHP
- 25. Comment déterminer si une URL asp.net a été "réécrite"?
- 26. .Formulaires WinDind si le bouton Quitter a été enfoncé
- 27. Javascript - vérifier si le prototype de méthode a été changé?
- 28. VCRedist - comment puis-je savoir si elle a été exécutée?
- 29. Est-il possible de déterminer si l'assembly a été chargé dans un service Web?
- 30. Dans un gestionnaire onclick, comment puis-je détecter si le décalage a été enfoncé?
Merci pour la mise à jour. – johnc