Cerco di capire come accedere a un metodo statico entro CallMe<T>()
della classe DoSomething
. La riflessione è l'unica soluzione qui? Non voglio istanziare un oggetto di tipo MyAction
. Inoltre, se lo si fa attraverso la riflessione, esiste un modo per creare il metodo attraverso la riflessione all'interno del metodo CallMe<T>()
una sola volta e quindi richiamarlo più volte per eseguire più operazioni sullo stesso metodo "riflesso"? O c'è un modo migliore che attraverso la riflessione? Fondamentalmente voglio creare classi di stile di implementazione del modello come MyAction
che definiscono il modo in cui lo byte[] DoThis(string text)
svolge il proprio compito. Il AskForSomething()
specificherà quindi quale modello viene utilizzato e in base al fatto che lo CallMe<T>()
continuerà a funzionare.Passaggio generico e utilizzo, posso eseguire le seguenti operazioni?
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;
}
}
Nota Suppongo che tu non intenda utilizzare 'DoThis' come metodo statico .. –
+1 Stavo cercando di spiegare perché questo non funziona, ma è apparentemente molto più semplice solo per descrivere come farlo lavoro ... – Rawling
Un'interfaccia è il modo corretto per farlo, ma se si ha _dispositivo il DoThis come metodo statico, allora si dovrà usare la riflessione. –