2010-11-30 21 views
0

J'utilise Unity2 avec une configuration XML. Il a la caractéristique de spécifier les espaces de noms et les assemblages dans la configuration XML pour laquelle la recherche de type automatique est effectuée, de sorte que vous n'avez pas besoin de toujours spécifier le nom complet ou créer un alias.Unity2.0 - Est-il possible de spécifier des assemblys et des espaces de noms pour la recherche de type par programme?

Est-il possible de spécifier des assemblys et des espaces de noms pour la recherche de type automatique par programme, sans qu'ils soient explicitement répertoriés dans la configuration XML? Mon objectif est de simplifier la configuration XML pour les administrateurs de mon application. Les types de deux ou trois espaces de noms seront presque toujours utilisés dans les enregistrements de conteneur, donc je voudrais que ces espaces de noms soient automatiquement inclus dans la recherche.

Répondre

0

Il n'y a rien de construit explicitement pour supporter ceci.

Une option nécessiterait quelques étapes supplémentaires dans votre code. au lieu d'appeler container.LoadConfiguration(), vous attrapions à la place explicitement la section de configuration:

var section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity"); 

Ensuite, vous iriez dans les espaces de noms ou assemblées des propriétés de la section, et d'ajouter de nouveaux objets ou NamespaceElement AssemblyElement pointant vers les espaces de noms et assemblages "standard". Puis vous appliquez la section de configuration mise à jour au conteneur. Quelque chose comme ceci:

section.Namespaces.Add(new NamespaceElement() { Name = "my.standard.namespace" }); 
container.LoadConfiguration(section); 

Je n'ai pas réellement essayé ceci, :-), mais cela devrait fonctionner.

+0

J'ai déjà essayé cette approche exacte, mais malheureusement une exception est levée lors de l'appel de la méthode Add(). Il dit que la configuration est en lecture seule. –

+0

Eh bien, sacrément, désolé à ce sujet. –