Могу ли я передать объект типа универсальному методу?

У меня есть метод FindAll на моем DataAccessLayer, который выглядит следующим образом:

public FindResult<T> FindAll<T>() where T : Entity, new()

и клиентский код с массивом Type [], который необходимо использовать для итеративного вызова метода FindAll следующим образом:

foreach (var type in typeArray)
{    
    var result = DataAccessLayer.FindAll<type>();
    ...

но компилятор жалуется на "Тип или пространство имен". Есть ли простой способ обойти это? Я пробовал type.GetType() или typeof (type) и не работал.

Большое спасибо заранее!

Ответы

Ответ 1

Вам может понадобиться использовать Reflection, чтобы сделать это, примерно так:

DataAccessLayer.GetType().GetMethod("FindAll<>").MakeGenericMethod(type).Invoke()

Это сообщение в блоге может также содержать необходимую информацию.

Ответ 2

При использовании generics тип должен быть разрешимым во время компиляции. Вы пытаетесь указать тип во время выполнения.