Wie rufen Sie eine generische Methode auf, wenn Sie den Typparameter nur zur Laufzeit kennen?
Ich habe diese Methode:
<code>public List<T> SomeMethod<T>( params ) where T : new() </code>
Also möchte ich das nennenSomeMethod
Das ist in Ordnung, wenn ich den Typ kenne:
<code>SomeMethod<Class1>(); </code>
Aber wenn ich nur habeClass1
zur Laufzeit kann ich es nicht aufrufen?
Also, wie man anruftSomeMethod
mit unbekanntem T-Typ? Ich habe Type durch Reflektion erhalten.
Ich habe den Typ des Typs aberSomeMethod<Type | GetType()>
funktioniert nicht
Update 7. Mai:
Hier ist ein Beispielcode für das, was ich erreichen möchte:
<code>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 }; } } } </code>
Dies ist eine Demo aus einem größeren Kontext.