SORU
10 AĞUSTOS 2012, Cuma


Yansıması ile statik yöntem çağrısı

Ad mySolution.Macros gibi çeşitli statik sınıflar var

static class Indent{    
     public static void Run(){
         // implementation
     }
     // other helper methods
}

Benim sorum yansıma yardımı ile bu yöntemleri çağırmak için mümkün olur?

Statik OLMAYAN yöntemler varsa gibi şeyler yapabilirim:

var macroClasses = Assembly.GetExecutingAssembly().GetTypes().Where( x => x.Namespace.ToUpper().Contains("MACRO") );

foreach (var tempClass in macroClasses)
{
   var curInsance = Activator.CreateInstance(tempClass);
   // I know have an instance of a macro and will be able to run it

   // using reflection I will be able to run the method as:
   curInsance.GetType().GetMethod("Run").Invoke(curInsance, null);
}

Derslerimi statik tutmak gibi olacak. Nasıl bir şey statik yöntemleri ile benzer yapmak mümkün olacak?

KısacasıAd mySolution tüm statik sınıflar tüm Çalışma yöntemlerini çağırmak istiyorum.Makrolar.

CEVAP
10 AĞUSTOS 2012, Cuma


documentation for MethodInfo.Invoke belirttiği gibi, ilk argüman sadece boş geçmesi statik yöntemler için göz ardı edilir.

foreach (var tempClass in macroClasses)
{
   // using reflection I will be able to run the method as:
   tempClass.GetMethod("Run").Invoke(null, null);
}

Yorum işaret ettiği gibi, GetMethod çağrılırken yöntemi statik olduğundan emin olmak isteyebilirsiniz:

tempClass.GetMethod("Run", BindingFlags.Public | BindingFlags.Static).Invoke(null, null);

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Curso Online Gratuito

    Curso Online

    4 Aralık 2011
  • Ludique

    Ludique

    21 NİSAN 2009
  • RobertDuskin

    RobertDuskin

    12 HAZİRAN 2008