184 messaggi dal 22 giugno 2008
In una classe dichiarata come abstract (shared) ho definito dei metodi statici e pubblici (public static). Le classi che ereditano dalla classe abstract ereditano anche i metodo statici in questione, tuttavia quando via reflection chiedo la lista di tutti i medoti statici attraverso GetMethods(BindingFlags.Static), i metodi statici contenuti nella classe base non vengono elencati, ammenochè non lanci GetMethods(BindingFlags.Static) sul tipo base (situazione che non mi entusiasma particolarmente).

Esiste un modo (attraverso le reflection) per avere la lista dei metodi statici (ereditati e non) di un tipo "interrogando" direttamete il tipo stesso oppure devo necessatiamente procedere a ritroso "interrogando" il tipo di base?
184 messaggi dal 22 giugno 2008
Nulla di nulla!!! Neanche con quel binding flag funziona. Io ho questa situazione:

 public abstract class Base
    {
       public static void Test()
       {
 
       }
    }

 public  class Eredita:Base
    {

    }


Ma non c'è verso di farsi restituire le informazioni sul metodo "Test" via reflection se interrogo il tipo "Eredita":

  MethodInfo[] m = typeof(Eredita).GetMethods();

"m" resta vuoto sia senza binding flags, sia ovviamente con Static | FlattenHierarchy. Se invece faccio questo:

 MethodInfo[] m = typeof(Eredita).BaseType.GetMethods();


trovo il metodo "Test", ma capite bene che è una soluzione da evitare poichè se qualche classe eredita da "Eredita" il gioco non funziona più inquanto dovrei fare

MethodInfo[] m = typeof(Eredita).BaseType.BaseType.GetMethods();


in altre parole non posso sapere a priori a che livello si trova il metodo statico che mi interessa...

Spero di essere io a sbagliare qualcosa...

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.