# - 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
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();
Ruby: örneği Arama sınıf yöntemi...
Eğer örneği varsa görmek sınıf yöntemi...
Javadoc diğer sınıf yöntemi için link...
Neden türetilmiş sınıftaki bir yöntemi...
Temel arama yöntemi kullanarak prototi...