Wenn ich Ihre Frage richtig verstanden, Sie haben im Wesentlichen die folgenden Typen definiert:
public class Qaz
{
public void Foo<T>(T item)
{
Console.WriteLine(typeof(T).Name);
}
}
public class Bar { }
Jetzt, da Sie haben eine Variable bar
als solche definiert:
var bar = typeof(Bar);
Sie möchten dann Foo<T>
anrufen können und dabei T
durch Ihre Instanzvariable bar
ersetzen.
Hier ist, wie:
// Get the generic method `Foo`
var fooMethod = typeof(Qaz).GetMethod("Foo");
// Make the non-generic method via the `MakeGenericMethod` reflection call.
// Yes - this is confusing Microsoft!!
var fooOfBarMethod = fooMethod.MakeGenericMethod(new[] { bar });
// Invoke the method just like a normal method.
fooOfBarMethod.Invoke(new Qaz(), new object[] { new Bar() });
Viel Spaß!
Können Sie Code anzeigen, wo Sie ihn verwenden möchten? Es ist definitiv möglich, daher ist es wahrscheinlich ein Syntaxfehler. – RPM1984