using AppliWebANA.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace AppliWebANA.Repositories.Messagerie { public abstract class MessagerieRepositoryBase : IDisposable { private static System.Reflection.ConstructorInfo Constructeur = null; public static MessagerieRepositoryBase Instancier() { if( Constructeur == null ) { string nomClasseMessagerieRepository = System.Configuration.ConfigurationManager .AppSettings["MessagerieRepository"]; Constructeur = AppDomain .CurrentDomain // Dans le domaine, .GetAssemblies() // Y a des bibliothèques .Where( a => !a.IsDynamic ) // Je veux pas les assemblies dynamiques .SelectMany( a => a.ExportedTypes ) // Je fais une liste des listes de type de toutes les bibliothèques .Where( type => type.Name == nomClasseMessagerieRepository ) // Le type que je veux .First() // Y en aura qu'un .GetConstructor( new Type[0] ); // Je veux son ctor sans argument } return (MessagerieRepositoryBase) Constructeur.Invoke( new object[0] ); } private bool CEstFait = false; public virtual void Dispose( bool memeLesTrucsPasDotNet ) { CEstFait = true; } public void Dispose() { if( !CEstFait ) { this.Dispose( true ); GC.SuppressFinalize( this ); } } public abstract IList ListerUtilisateurs(); /// /// Ajoute l'utilisateur si pas déjà présent /// /// /// Les messages de l'utilisateur (éventuellement vide si nouvel utilisateur) public abstract IList AjouterUtilisateur( string nomUtilisateur ); public abstract IList ListerMessages( string nomUtilisateur ); public abstract void Envoyer( string destinataire, Message message ); } }