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

  • Fullscreen

    Fullscreen

    23 Mart 2006
  • SamsTech

    SamsTech

    4 NİSAN 2014
  • Watcher3223

    Watcher3223

    15 Kasım 2007