Ответ 1
Вы не можете, прямо. Точка дженериков заключается в обеспечении безопасности типа компиляции, когда вы знаете тип, который вам интересен во время компиляции, и можете работать с экземплярами этого типа. В вашем случае вы знаете только Type
, поэтому вы не можете получать какие-либо проверки времени компиляции, которые имеют любые объекты, которые у вас есть, экземпляры этого типа.
Вам нужно будет вызвать метод через отражение - что-то вроде этого:
// Get the generic type definition
MethodInfo method = typeof(Session).GetMethod("Linq",
BindingFlags.Public | BindingFlags.Static);
// Build a method with the specific type argument you're interested in
method = method.MakeGenericMethod(typeOne);
// The "null" is because it a static method
method.Invoke(null, arguments);
Если вам нужно использовать этот тип много, вам может быть удобнее написать свой собственный общий метод, который вызывает любые другие общие методы, которые ему нужны, а затем вызовите ваш метод с отражением.