MessagerieRepositoryBase.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using AppliWebANA.Models;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Web;
  6. namespace AppliWebANA.Repositories.Messagerie {
  7. public abstract class MessagerieRepositoryBase : IDisposable {
  8. private static System.Reflection.ConstructorInfo Constructeur = null;
  9. public static MessagerieRepositoryBase Instancier() {
  10. if( Constructeur == null ) {
  11. string nomClasseMessagerieRepository = System.Configuration.ConfigurationManager
  12. .AppSettings["MessagerieRepository"];
  13. Constructeur = AppDomain
  14. .CurrentDomain // Dans le domaine,
  15. .GetAssemblies() // Y a des bibliothèques
  16. .Where( a => !a.IsDynamic ) // Je veux pas les assemblies dynamiques
  17. .SelectMany( a => a.ExportedTypes ) // Je fais une liste des listes de type de toutes les bibliothèques
  18. .Where( type => type.Name == nomClasseMessagerieRepository ) // Le type que je veux
  19. .First() // Y en aura qu'un
  20. .GetConstructor( new Type[0] ); // Je veux son ctor sans argument
  21. }
  22. return (MessagerieRepositoryBase) Constructeur.Invoke( new object[0] );
  23. }
  24. private bool CEstFait = false;
  25. public virtual void Dispose( bool memeLesTrucsPasDotNet ) {
  26. CEstFait = true;
  27. }
  28. public void Dispose() {
  29. if( !CEstFait ) {
  30. this.Dispose( true );
  31. GC.SuppressFinalize( this );
  32. }
  33. }
  34. public abstract IList<string> ListerUtilisateurs();
  35. /// <summary>
  36. /// Ajoute l'utilisateur si pas déjà présent
  37. /// </summary>
  38. /// <param name="nomUtilisateur"></param>
  39. /// <returns>Les messages de l'utilisateur (éventuellement vide si nouvel utilisateur)</returns>
  40. public abstract IList<Message> AjouterUtilisateur( string nomUtilisateur );
  41. public abstract IList<Message> ListerMessages( string nomUtilisateur );
  42. public abstract void Envoyer( string destinataire, Message message );
  43. }
  44. }