Ruby win32ole - как определить тип класса OLE, поддерживает ли класс OLE метод - PullRequest
4 голосов
/ 27 февраля 2009

Я использую Ruby 1.8. Использование модуля WIN32OLE -

1) Как определить имя класса экземпляра объекта OLE? 2) Как узнать, поддерживает ли экземпляр объекта определенный метод?

В сценарии автоматизации Outlook я пытаюсь удалить элементы в папке «Удаленные», которые старше 21 дня. Для почтовых элементов я хочу использовать свойство ReceivedTime, но для этого мне нужно проверить, является ли этот элемент экземпляром MailItem.

Во-вторых, лучшее, что я смог придумать, это (очень медленно):

def MethodExists(obj, methodName)
  obj.ole_methods.each{|method|
    if (method.name == methodName)
      return true
    end
  }
  return false
end

Ответы [ 2 ]

7 голосов
/ 27 февраля 2009

С учетом объектов WIN32OLE ...

Как определить имя класса экземпляра объекта OLE?

object.ole_obj_help.name

Как узнать, поддерживает ли экземпляр объекта определенный метод?

object.ole_methods.collect!{ |x| x.to_s }.include?( 'MethodName' )
0 голосов
/ 27 февраля 2009
  1. obj.class

  2. if obj.respond_to?(methodName)
        #do your work
    end
    
...