Ich möchte Methoden mit einem bestimmten Attribut aufrufen. Also fahre ich durch alle Assemblys und alle Methoden, um die Methoden mit meinem Attribut zu finden. Funktioniert gut, aber wie rufe ich eine bestimmte Methode auf, wenn ich nur MethodInfo habe.Invoke-Methode von MethodInfo
AppDomain app = AppDomain.CurrentDomain;
Assembly[] ass = app.GetAssemblies();
Type[] types;
foreach (Assembly a in ass)
{
types = a.GetTypes();
foreach (Type t in types)
{
MethodInfo[] methods = t.GetMethods();
foreach (MethodInfo method in methods)
{
// Invoke a certain method
}
}
}
Das Problem ist, dass ich die Instanz der Klasse nicht kenne, die diese bestimmte Methode enthält. Daher kann ich es nicht richtig aufrufen, da die Methoden nicht statisch sind. Ich möchte auch vermeiden, eine neue Instanz dieser Klasse zu erstellen, wenn möglich.
Ich möchte Methoden mit einem benutzerdefinierten Attribut markieren, damit sie von einer Befehlszeile aufgerufen werden können. Egal wo sie sind. Aber ich stimme Ihnen zu, dass es keinen Sinn macht, die gleichen Methoden in verschiedenen Fällen aufzurufen, in denen die Methode nicht statisch ist. Also ich werde das in einer Art Manager-Klasse verwenden, die eine Sammlung dieser Objekte enthält, um einen Aufruf für eine bestimmte Instanz pro Parameter aufzurufen. Ich denke, das wird tun, was ich will. Vielen Dank – apparat