Ich versuche herauszufinden, wie ich auf eine statische Methode innerhalb CallMe<T>()
der Klasse DoSomething
zugreifen kann. Ist Reflexion die einzige Lösung hier? Ich möchte kein Objekt vom Typ MyAction
instanziieren. Auch wenn es durch Reflexion getan wird, gibt es eine Möglichkeit, die Methode durch Reflexion innerhalb der Methode CallMe<T>()
nur einmal zu erstellen und sie dann mehrmals aufzurufen, um mehrere Operationen mit derselben "reflektierten" Methode auszuführen? Oder gibt es einen besseren Weg als durch Reflexion? Ich möchte im Grunde erstellen Template-Implementierung Stil Klassen wie MyAction
, die definieren, wie byte[] DoThis(string text)
seine Pflicht erfüllt. Die AskForSomething()
wird dann angeben, welche Vorlage verwendet wird und entsprechend wird die CallMe<T>()
über ihre Arbeit gehen.Generische Art und Weise der Weitergabe und Verwendung, kann ich folgendes tun?
public class AskSomething
{
public void AskForSomething()
{
DoSomething doSomething = new DoSomething();
doSomething.CallMe<MyAction>();
}
}
public class DoSomething
{
public void CallMe<T>()
{
Type type = typeof(T);
//Question: How can I access 'DoThis(string text)' here?
//Most likely by reflection?
}
}
public class MyAction
{
public static byte[] DoThis(string text)
{
byte[] ret = new byte[0]; //mock just to denote something is done and out comes a byte array
return ret;
}
}
Hinweis Ich gehe davon aus, dass Sie 'DoThis' nicht als statische Methode haben wollen. –
+1 Ich habe versucht zu erklären, warum das nicht funktioniert, aber es ist anscheinend viel einfacher, nur zu beschreiben, wie man es macht Arbeit ... – Rawling
Eine Schnittstelle ist der richtige Weg, um dies zu tun, aber wenn Sie die DoThis als statische Methode haben müssen, dann müssen Sie die Reflexion verwenden. –