Ejemplo n.º 1
0
		/// <summary>
		/// Empieza a observar un espacio
		/// </summary>
		/// <param name="obj">Objeto a observar</param>
		public void ObserveObject (ISpaceable obj)
		{
			if (IsBeingObserved (obj))
				throw new InvalidOperationException ("Object already being observed.");
			var state = new ObservationState (obj);
			observedObjects.Add (state);
		}
Ejemplo n.º 2
0
		/// <summary>
		/// Devuelve el estado de observación de un objeto
		/// </summary>
		/// <remarks>Puede causar <see cref="InvalidOperationException"/> si no esta siendo observado tal objeto</remarks>
		/// <returns>El estado de observación del objeto</returns>
		public ObservationState GetState (ISpaceable obj)
		{
			// Recordar que nunca, los objetos observados, son nulos
			foreach (var x in observedObjects)
				if (object.Equals (x.ObservedObject, obj))
					return x;
			throw new InvalidOperationException (
				string.Format (
					"Object {0} is not being observed.",
					obj));
		}
Ejemplo n.º 3
0
		/// <summary>
		/// Determina si un objeto está siendo observado
		/// </summary>
		public bool IsBeingObserved (ISpaceable obj)
		{
			return observedObjects.Exists (z => z.ObservedObject.Equals (obj));
		}
Ejemplo n.º 4
0
		/// <summary>
		/// Deja de observar un espacio
		/// </summary>
		public void UnobserveObject (ISpaceable obj)
		{
			observedObjects.RemoveAll (z => z.ObservedObject.Equals (obj));
		}
Ejemplo n.º 5
0
			internal ObservationState (ISpaceable observedObject)
			{
				if (observedObject == null)
					throw new ArgumentNullException ("observedObject");
				ObservedObject = observedObject;
			}