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

  • fouseyTUBE

    fouseyTUBE

    21 Mart 2011
  • iNCH

    iNCH

    20 Temmuz 2009
  • kylediablo

    kylediablo

    8 Ocak 2007