Repositório genérico para SQLite-Net no projeto Xamarin

Gostaria de saber se existe uma maneira de escrever um repositório genérico para o meu projeto Xamarin versus escrever um repositório diferente para cada entidade no meu objeto. The XamarinTasky Pro O exemplo tem um repositório para a entidade Tarefa porque essa é a única entidade que possui.

Em meu próprio projeto, tenho mais de uma Entidade; portanto, minha pergunta é como posso tornar o Repositório do Cliente a seguir genérico para que o ProductManager, EmployeeManager, etc. possam usá-lo. Se você souber de um exemplo ou post de um blog, aponte-me para a direção certa

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);
        }
    }

questionAnswers(2)

yourAnswerToTheQuestion