How do you call a generic method if you only know the type parameter at runtime?
c#, generics, reflection
Solution
You need to call it using reflection:
var method = typeof(SomeClass).GetMethod("SomeMethod");
method.MakeGenericMethod(someType).Invoke(...);
Problem
I have this method: ``` public List<T> SomeMethod<T>( params ) where T : new() ``` So I want to call this `SomeMethod` which is fine if I know the type: ``` SomeMethod<Class1>(); ``` But if I only have `Class1` at runtime I'm unable to call it? So how to call `SomeMethod` with unknown T type? I got Type by using reflection. I have the Type of type but `SomeMethod<Type | GetType()>` doesn't work. Update 7. May: Here is a sample code of what I want to achieve: ``` using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; namespace ConsoleApplication63 { public class DummyClass { } public class Class1 { public string Name; } class AssemblyTypesReflection { static void Main(string[] args) { object obj = new Class1() { Name = "John" } ; Assembly assembly = Assembly.GetExecutingAssembly(); var AsmClass1 = (from i in assembly.GetTypes() where i.Name == "Class1" select i).FirstOrDefault(); var list = SomeMethod<AsmClass1>((AsmClass1)obj); //Here it fails } static List<T> SomeMethod<T>(T obj) where T : new() { return new List<T> { obj }; } } } ``` This is a demo taken out of a bigger context.