2

j'ai écrit mon CustomLifetimeManager comme ceci:Unité: passer des paramètres constructeur à vie personnalisée, dans le fichier de configuration xml

public class CustomLifetimeManager <T> : LifetimeManager 
{ 
    private readonly string _arg; 

    public CustomLifetimeManager(string arg) 
    { 
     _arg = arg; 
    } 
} 

Maintenant, il fonctionne la configuration facile du conteneur programme, mais comment l'ajouter dans le fichier de configuration comme ce qui suit ?

<type type="myTime" 
     mapTo="myImpl"> 
     <lifetime type="CustomLifetimeManager"/> 
</type> 
+0

Voulez-vous lire la config? Si vous le faites, ajoutez des clés avec des valeurs et lisez-les comme suit: string configValue = System.Configuration.ConfigurationManager.type ["keyName"]; – MrFox

+0

Non, je veux juste appeler: unityConfigurationSection.Containers [0] .Configure (Container) pour obtenir la configuration de mon conteneur. Je voudrais configurer le gestionnaire de durée de vie dans le fichier de configuration. – onof

Répondre

0

Vous devez ajouter une deuxième classe: A TypeConverter. Cette classe est responsable de prendre une chaîne et de la transformer en n'importe quel type que vous voulez. Une fois que vous le mettre en œuvre, vous pouvez faire quelque chose comme ceci dans votre fichier de configuration:

<register type="MyType" mapTo"MyImpl"> 
    <lifetime typeConverter="CustomLifetimeManagerConverter" value="arg" /> 
</register> 

et de là il devrait fonctionner (en supposant que la configuration peut trouver le convertisseur de type comme tout autre type).