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

  • Bad Lip Reading

    Bad Lip Read

    22 Mart 2011
  • BiGSH0TROB

    BiGSH0TROB

    7 NİSAN 2011
  • Rayone GB

    Rayone GB

    14 Temmuz 2007