yöntemini destekleyip desteklemediğini Ruby 1.8 kullanıyorum. WIN32OLE modülünü kullanma -Ruby win32ole - OLE sınıfının nasıl belirleneceği, OLE sınıfının
1) Bir OLE nesnesi örneğinin sınıf adını nasıl belirlerim? 2) Bir nesne örneğinin belirli bir yöntemi destekleyip desteklemediğini nasıl anlarım?
Bir Outlook otomasyon komut dosyasında, 21 günlükten büyük olan 'Silinmiş Öğeler' klasöründeki öğeleri silmeye çalışıyorum. Posta öğeleri için ReceivedTime özelliğini kullanmak istiyorum, ancak bunu yapmak için öğenin gerçekten bir MailItem örneğinin olup olmadığını kontrol etmem gerekiyor. İkinci İçin
, ben ile gelip mümkün olmuştur en iyi (gerçekten yavaş) 'dir:def MethodExists(obj, methodName)
obj.ole_methods.each{|method|
if (method.name == methodName)
return true
end
}
return false
end
ile çalışmıyor? {| x | x.to_s == "MethodName"} biraz daha özlü olurdu. Ya da #detect, bu da iyi olurdu. –
@MikeWoodhouse: Bu kod [bu bağlantıdan] geldi (http://rubyonwindows.blogspot.com/2009/02/win32ole-objects-class-names-and.html). Şahsen ben ole_methods.collect (&: to_s) '(yani patlama yok ve Ruby 1.8.6'da değilseniz Symbol # to_proc) kullanın. –