internal IEnumerable <T> GetAll <T>(ISqlLiteDataObjectCrud <T> crud) where T : class, ISqlLiteDataObject
        {
            var tl = new List <T>();

            lock (Locker)
            {
                Connection = new SqliteConnection("Data Source=" + Path);
                Connection.Open();
                using (var contents = Connection.CreateCommand())
                {
                    contents.CommandText = crud.ReadAll();
                    var r = contents.ExecuteReader();
                    while (r.Read())
                    {
                        tl.Add(crud.FromReader(r));
                    }
                }
                Connection.Close();
            }
            return(tl);
        }
 internal T Get <T>(int id, ISqlLiteDataObjectCrud <T> crud) where T : class, ISqlLiteDataObject
 {
     lock (Locker)
     {
         Connection = new SqliteConnection("Data Source=" + Path);
         Connection.Open();
         using (var command = Connection.CreateCommand())
         {
             command.CommandText = crud.Read();
             command.Parameters.Add(new SqliteParameter(DbType.Int32)
             {
                 Value = id
             });
             var r = command.ExecuteReader();
             while (r.Read())
             {
                 var thing = crud.FromReader(r);
                 return(thing);
             }
         }
         Connection.Close();
     }
     return(null);
 }