view Agendas/trunk/src/Agendas.Repositories.Memory/RepositoryBase.cs @ 214:7d838e7d83b3

Se soluciona ticket 176. Se agrega validación para que no se pueda agendar otro evento con el mismo título, buscando los eventos que no estén en estado propuesto.
author alabra
date Wed, 24 Aug 2011 19:49:18 -0300
parents 2d1adbaf0373
children
line wrap: on
line source

using System;
using System.Collections.Generic;
using AltNetHispano.Agendas.Domain;

namespace AltNetHispano.Agendas.Repositories.Memory
{
	public class RepositoryBase<T> where T : Identificable
	{
		protected static readonly IDictionary<Guid, T> Objects = new Dictionary<Guid, T>();

		public T Get(Guid id)
		{
			T value;
			return Objects.TryGetValue(id, out value) ? value : null;
		}

		public void Save(T obj)
		{
			if (obj.Id==Guid.Empty)
			{
				var setter = typeof (Identificable).GetProperty("Id");
				setter.SetValue(obj, Guid.NewGuid(), null);
			}

			if (!Objects.Keys.Contains(obj.Id))
				Objects.Add(obj.Id, obj);
		}

		public void Delete(T obj)
		{
			Objects.Remove(obj.Id);
		}


	}
}