Llamando a un método genérico con el tipo derivado correcto

Tengo el siguiente escenario:

Tengo tres clases, llamémoslasA, B yC. Todo lo que tienen en común es que heredan de la misma interfaz,ISomeInterface y que son clases que se asignan a entidades utilizando Entity Framework.

Tengo un método que recibió una lista de objetos que implementa esta interfaz, pero los objetos en sí mismos serán instancias deA, B oC.

El método shell se ve así

public void MyMethod(List<ISomeInterface> entityList)
{
  foreach(var entity in entityList)
  {
    ProcessEntity(entity);
  }
}

Ahora, el problema es con elProcessEntity método. Este es un método genérico, que necesita recuperar la tabla de elementos coincidentes de la base de datos según el tipo o la entidad, por lo que se ve así:

public void ProcessEntity<T>(T entity)
{
  using( var repository = new DbRepository())
  {
    var set = repository.Set<T>();
    ...
  }
}

El problema es que la líneavar set = repository.Set<T>(); falla porqueT esISomeInterface en este caso, y no el tipo real (A, B oC), por lo que da una excepción que no puede relacionarse con el tipo dado, lo cual es comprensible.

Entonces mi pregunta es: ¿Cómo puedo llamar a ProcessEntity con el tipo real del objeto dentro de la lista, y no con el tipo de interfaz que implementan?

Respuestas a la pregunta(3)

Su respuesta a la pregunta