Я пытаюсь вызвать метод с отражением, который имеет общий тип возвращаемого значения, например:
public class SomeClass<T>
{
public List<T> GetStuff();
}
Я получаю экземпляр SomeClass с вызовом GetClass<T>
универсального метода репозитория.
MethodInfo lGetSomeClassMethodInfo = typeof(IRepository)
.GetMethod("GetClass")
.MakeGenericMethod(typeof(SomeClass<>);
object lSomeClassInstance = lGetSomeClassMethodInfo.Invoke(
lRepositoryInstance, null);
После этого я пытаюсь вызвать метод GetStuff:
typeof(SomeClass<>).GetMethod("GetStuff").Invoke(lSomeClassInstance, null)
Я получаю исключение из-за того, что метод имеет общие аргументы. Однако я не могу использовать MakeGenericMethod для разрешения типа возвращаемого значения. Также, если вместо typeof(SomeClass<>)
я использую lSomeClassInstance.GetType()
(который должен иметь разрешенные типы) GetMethod("GetStuff")
возвращает ноль!
UPDATE
Я нашел решение и скоро опубликую ответ.