Repositorio genérico para SQLite-Net en proyecto Xamarin

Me pregunto si hay una manera de escribir un repositorio genérico para mi proyecto Xamarin en lugar de escribir un repositorio diferente para cada entidad en mi objeto. El xamarinTasky Pro ejemplo, tenga un Repositorio para la entidad Tarea porque esa es la única entidad que tiene.

En mi propio proyecto tengo más de una entidad, por lo que mi pregunta es cómo puedo hacer que el siguiente repositorio de clientes se vuelva genérico para que ProductManager, EmployeeManager, etc. puedan usarlo. Si conoce un ejemplo o una publicación de blog, indíqueme la dirección correcta

namespace App.DataLayer
{
    public class CustomerRepository
    {
        private ProntoDatabase _db = null;
        protected static string DbLocation;
        protected static CustomerRepository Me;

        static CustomerRepository()
        {
            Me = new CustomerRepository();
        }

        protected CustomerRepository()
        {
            //set the db location;
            DbLocation = DatabaseFilePath;

            //instantiate the database
            _db = new ProntoDatabase(DbLocation);
        }


        public static string DatabaseFilePath
        {
            get
            {
                const string sqliteFilename = "CustomerDB.db3";
                var libraryPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
                var path = Path.Combine(libraryPath, sqliteFilename);
                return path;
            }
        }


        // CRUD (Create, Read, Update and Delete) methods

        public static Customer GetCustomer(int id)
        {
            return Me._db.GetItem<Customer>(id);
        }

        public static IEnumerable<Customer> GetCustomers()
        {
            return Me._db.GetItems<Customer>();
        }

        public static int SaveCustomer(Customer item)
        {
            return Me._db.SaveItem(item);
        }

        public static int DeleteCustomer(int id)
        {
            return Me._db.DeleteItem<Customer>(id);
        }
    }