1. Configuration de Unity via le fichier de configuration
  2. Il faut commencer par rajouter une section dans le fichier de configuration et le décrire ...
      <section name="unity"
        type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,
              Microsoft.Practices.Unity.Configuration" />
    
      <unity>
        <typeAliases>
          <typeAlias alias="singleton"
                     type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager, 
                      Microsoft.Practices.Unity" />
        </typeAliases>
        <containers>
          <container>
            <types>
              <type type="Controllers.ExempleController, Controllers">
                <lifetime type="singleton" />
              </type>
            </types>
          </container>
        </containers>
      </unity>
    
  3. Création du singleton pour l'utilisation de Unity
  4. public static class ContainerUnity
    {
        public static IUnityContainer Container
        {
            get
            {
                if (null == container)
                {
                    lock (locker)
                    {
                        if (null == container)
                        {
                            container = new UnityContainer();
                            UnityConfigurationSection section
                                = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
                            section.Containers.Default.Configure(container);
                        }
                    }
                }
    
                return container;
            }
        }
    
        private static IUnityContainer container;
        private static object locker = new object();
    }
    
  5. Développement de la classe parent des pages ASPX
  6. public class CustomPage<T> : System.Web.UI.Page
    {
        protected T Controller
        {
            get
            {
                return ContainerUnity.Container.Resolve<T>();
            }
        }
    }
    
  7. Exemple de page ASPX
    • Classe controlleur
    • public class ExempleController
      {
          public string Key
          {
              get { return "Salut"; }
          }
      }
      
    • Page ASPX
    • public partial class _Default : CustomPage<ExempleController>
      {
          protected void Page_Load(object sender, EventArgs e)
          {
              Label1.Text = this.Controller.Key;
          }
      }
      
    • Voici le résultat ;-)
  8. Conclusion
  9. Je suis très loin de montrer toutes les possibilités de Unity... Mais je tenterai de vous le faire découvrir prochainement ...