| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- 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<string> ListerUtilisateurs();
- /// <summary>
- /// Ajoute l'utilisateur si pas déjà présent
- /// </summary>
- /// <param name="nomUtilisateur"></param>
- /// <returns>Les messages de l'utilisateur (éventuellement vide si nouvel utilisateur)</returns>
- public abstract IList<Message> AjouterUtilisateur( string nomUtilisateur );
- public abstract IList<Message> ListerMessages( string nomUtilisateur );
- public abstract void Envoyer( string destinataire, Message message );
- }
- }
|