Ich habe eine Klassedie generische Methode auf einer statischen Klasse
public static class MyClass
{
public static T MyMethod<T>(T item) where T : ISomeInterface<T>, new
{
return MyMethod(new[] { item}).First();
}
public static IEnumerable<T> MyMethod<T>(params T[] items) where T : ISomeInterface<T>, new
{
// for simplicity
return items.ToList();
}
}
und eine Reihe von noch komplexeren Überlastungen. Jetzt möchte ich die Klasse erweitern (weil ich, wenn von Powershell nennen wollen) mit
public static IEnumerable MyMethod(string typeName, params object[] items)
{
var type = Type.GetType(typeName, true, true);
var paramTypes = new Type[] { type.MakeArrayType() };
var method = typeof(MyClass).GetMethod(
"MyMethod", BindingFlags.Public | BindingFlags.Static
| BindingFlags.IgnoreCase, null, paramTypes, null);
return method.Invoke(null, new object[] { items });
}
Aber method
ist immer null. Welches ist der richtige Weg, um meine spezifische Methode über GetMethod()
zu erhalten.
Was ist die 'table' Variable? Meinst du stattdessen 'typeName'? –
Sind diese Methoden Instanzmethoden oder statische Methoden? –
'kann Instanzmitglieder in einer statischen Klasse nicht deklarieren'. –