2017-10-20 25 views
1

Comment résoudre une instance d'une classe avec la nouvelle méthode Unity 5.0.0 Resolve()?Résoudre l'instance avec unity 5.0.0

Dans Unity 4.0.1 j'ai résolu une instance comme l'exemple donné ci-dessous avec SettingsContext. Mais cela ne fonctionne plus.
Je pense qu'il s'agit de donner un second argument à Resolve, mais je ne suis pas sûr du comment.

var _unity = UnityConfig.GetConfiguredContainer(); 
var _settings = _unity.Resolve<SettingsContext>(); 

Avec classe UnityConfig étant défini comme

public class UnityConfig 
{ 
    private static Lazy<IUnityContainer> container = new Lazy<IUnityContainer>(() => 
    { 
     var container = new UnityContainer(); 
     RegisterTypes(container); 
     return container; 
    }); 

    public static IUnityContainer GetConfiguredContainer() 
    { 
     return container.Value; 
    } 

    public static void RegisterTypes(IUnityContainer unity) 
    { 
     //all the unity.RegisterType calls 
    } 
} 

Répondre

1
  1. Comme d'habitude, charger le conteneur.
  2. Ensuite, chargez la section nommée - la valeur par défaut est "unité", mais ce peut être n'importe quelle étiquette que vous voulez dans le fichier de configuration.
  3. Enfin, demandez à l'objet section de configurer le conteneur.

    var c = new UnityContainer();  
    var section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity"); 
    section.Configure(c); 
    var ss = c.Resolve<IStorageSystem>(); 
    

Pour l'application | web.config, assurez-vous de faire référence à la définition de type mise à jour (voir montage).

<configSections> 
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Unity.Configuration"/> 
</configSections> 
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity"> 
<container> 
    <register type="FileBox.IStorageSystem, FileBox" mapTo="FileBox.StorageSystem.Local.LocalFileSystem, FileBox" > 
    <constructor> 
     <param name="root"> 
     <value value =""/> 
     </param> 
    </constructor> 
    </register> 
</container>