¿Cómo convertir DataSource a List <T>?

Tengo el siguiente método que carga productos en un DataGridView

private void LoadProducts(List<Product> products)
{
    Source.DataSource = products;  // Source is BindingSource
    ProductsDataGrid.DataSource = Source;
}

Y ahora estoy tratando de devolverme para guardarlos como se muestra a continuación.

private void SaveAll()
{
   Repository repository = Repository.Instance;
   List<object> products = (List<object>)Source.DataSource; 
   Console.WriteLine("Este es el número {0}", products.Count);
   repository.SaveAll<Product>(products);
   notificacionLbl.Visible = false;
}

Pero me sale unInvalidCastException en esta linea:

List<object> products = (List<object>)Source.DataSource;

Entonces, ¿cómo puedo convertir el DataSource a una lista?

Respuestas a la pregunta(4)

Su respuesta a la pregunta