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

  • Distractify

    Distractify

    1 Aralık 2011
  • MrChiCity3

    MrChiCity3

    14 NİSAN 2008
  • SVB International

    SVB Internat

    29 EKİM 2011