Как использовать переменную Type в общем вызове метода (C #) - PullRequest
1 голос
/ 14 октября 2011

У меня есть переменная типа t, переданная в метод, и я хочу использовать ее в качестве универсального параметра при вызове IQueryable.Join, как показано ниже

queryResult.Join<Type1, Type2, t, Type3>( items, outerSelector, innerSelector, ( a, b) => a);

Это явно не работает. Что я должен сделать с t, чтобы достичь того, что я хотел? Спасибо!

Ответы [ 2 ]

5 голосов
/ 14 октября 2011

По сути, вы должны вызвать метод с отражением:

  • Получите шаблон общего метода с Type.GetMethod
  • Звоните MakeGenericMethod, передавая ваши 4 параметра типа
  • Вызвать метод, передавая обычные аргументы

Это боль: (

1 голос
/ 14 октября 2011

Я не уверен в деталях вашей "переменной типа", но если переменная уже является универсальным параметром для метода, вы можете использовать его как универсальный параметр для Join:

public void MyMethod<T>()
{
    // do some stuff to get queryResult, then
    queryResult.Join<Type1, Type2, T, Type3>(items, outerSelector, innerSelector, (a, b) => something);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...