using System.Collections.ObjectModel;
using System.Runtime.InteropServices;
using Modelo;

namespace Controladora
{
    public abstract class ControladoraBase<T /*Tipo de Dato*/ ,
                                           J /*Singleton*/>
        where J : new()
    {


        // Singleton thread-safe por si quiero usar "Parallel"
        private static J instance = new J();
        public static J Instance
        {
            get
            {                
                return instance;
            }   
        }


        // Lista los contenidos del repositorio
        abstract public ReadOnlyCollection<T> Listar();

        // Recibe mensajes de la Vista para dar de alta
        abstract public string Añadir(T t);

        // Recibe mensajes para modificar
        abstract public string Modificar(T t);

        // Recibe mensajes para eliminar
        abstract public string Eliminar(T t);
    }
}