Вызов универсального метода с правильным производным типом

У меня есть следующий сценарий:

У меня есть три класса, давайте назовем ихA, B а такжеC, Все, что у них общего, это то, что они наследуются от одного и того же интерфейса,ISomeInterface и что они являются классами, которые сопоставляются с сущностями, использующими Entity Framework.

У меня есть метод, который получил список объектов, который реализует этот интерфейс, но сами объекты будут экземплярамиA, B или жеC.

Оболочка метода выглядит следующим образом

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

Теперь проблема сProcessEntity метод. Это универсальный метод, который должен извлечь таблицу соответствующих элементов из базы данных в соответствии с типом или сущностью, поэтому он выглядит следующим образом:

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

Проблема в том, что линияvar set = repository.Set<T>(); не удается, потому чтоT являетсяISomeInterface в данном случае, а не фактический тип (A, B или жеC), поэтому он дает исключение, которое не может относиться к данному типу, что понятно.

Поэтому мой вопрос: как я могу вызвать ProcessEntity с фактическим типом объекта внутри списка, а не с типом интерфейса, который они реализуют.

Ответы на вопрос(3)

Ваш ответ на вопрос