Laurent Kempé
Création dynamique d'un objet configuré dans le web.config
Méthode permettant de créer à la volé un objet en fonction d'une configuration en base ou dans un fichier
Par Laurent Kempé publié le 10/01/2005 à 21:36, lu 7007 fois,
Lors de l'unification des modules d'articles et d'astuces sur le site, je me suis rendu compte que les deux étaient très proche. Ce qu'il fallait c'était l'unification de la couche de présentation avec mes composants ascx et mes pages aspx. Il fallait aussi une méthode pour lire une configuration, soit depuis une base soit depuis un fichier de configuration, afin de créer dynamiquement le bon type que je voulais afficher.

Voici la méthode que j'ai utilisée qui me permet de configurer, ici dans mon web.config, la classe que je veux utiliser. Cette classe doit faire partie du domaine déjà chargé.
using System;

public class ContentModule : PortalControl
{
    protected IContentProvider contentProvider
    {
        get
        {
            if (Settings["assemblyName"] != null && 
                Settings["typeName"] != null)
            {
                return (IContentProvider) Activator.CreateInstance((string) Settings["assemblyName"],
                    (string) Settings["typeName"]).Unwrap();
            }
            throw new ApplicationException("Content Provider miss configured.");
        }
    }

    ...
}
A l'aide de cette propriété je peux créer dynamiquement un type, dérivant de mon interface IContentProvider qui va implémenter mon API d'accès aux données. Pour cela j'ai deux classes : AstuceContentProvider et ArticleContentProvider qui implémentent l'interface et qui sont juste des adaptateurs unifiant les deux anciens modèles de données.
 
» Démarrer une discussion