SORU
16 Temmuz 2009, PERŞEMBE


# - C Derleme Yüklenemedi Yol Doğru, Sınıf ve Arama Çalıştırmak Find() Yöntemi

Örnek konsol programı.

class Program
{
    static void Main(string[] args)
    {
        // ... code to build dll ... not written yet ...
        Assembly assembly = Assembly.LoadFile(@"C:\dyn.dll");
        // don't know what or how to cast here
        // looking for a better way to do next 3 lines
        IRunnable r = assembly.CreateInstance("TestRunner");
        if (r == null) throw new Exception("broke");
        r.Run();

    }
}

Dinamik olarak bir derleme yapmak istiyorum (.dll) ve derleme yükleme, bir sınıfın örneğini oluşturmak ve Çalıştırmak ara() o sınıfın yöntemi. Bir şey için TestRunner sınıf döküm denemeli miyim? Meclisi (dinamik kod) benim benim türleri (statik derleme / shell uygulaması hakkında nasıl emin değilim. Sadece yansıma birkaç satır kod Çalıştırmak aramak için kullanmak daha iyi olur() sadece bir nesne. Bu kodu nasıl olmalıdır?

GÜNCELLEME: William Edmondson - yorum bakın

CEVAP
16 Temmuz 2009, PERŞEMBE


TestRunner tipi arama kurulda bilgilere erişimi (olmayabilir gibi geliyor) varsa, bu yöntemi çağırabilirsiniz:

Assembly assembly = Assembly.LoadFile(@"C:\dyn.dll");
Type     type     = assembly.GetType("TestRunner");
var      obj      = Activator.CreateInstance(type);

// Alternately you could get the MethodInfo for the TestRunner.Run method
type.InvokeMember("Run", 
                  BindingFlags.Default | BindingFlags.InvokeMethod, 
                  null,
                  obj,
                  null);

Eğer erişim IRunnable arayüzü yazabilirsiniz döküm örneği için (yerine TestRunner hangi tip uygulanır dinamik olarak oluşturulan veya yüklenen derleme, değil mi?):

  Assembly assembly  = Assembly.LoadFile(@"C:\dyn.dll");
  Type     type      = assembly.GetType("TestRunner");
  IRunnable runnable = Activator.CreateInstance(type) as IRunnable;
  if (runnable == null) throw new Exception("broke");
  runnable.Run();

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Air_Fooj

    Air_Fooj

    24 NİSAN 2009
  • jonathepianist

    jonathepiani

    31 Temmuz 2008
  • LiveForGodsKingdom

    LiveForGodsK

    6 NİSAN 2008