Система.__ComObject в LotusNotes в VB.net при извлечении вложений

Я хочу получить доступ к базе данных Lotus Notes и получить вложения из документов в ней. Я могу открыть БД и документ и перебрать все элементы. Проблема в том, что я не могу использовать элементы в качестве NotesRichTextItem и, следовательно, не проверять, есть ли item.EmbeddedObject. Я думаю, что это проблема с объявлением предметов. В общем: если я отлаживаю с использованием VS2010, doc, база данных и NotesSession имеют системное "значение".__ComObject, а "тип" - это объект Domino.Notes, которым он и должен быть. например, документ в СМОТРЕТЬ:

Name   VALUE                 TYPE     
doc    {System.__ComObject}  Domino.NotesDocument

но если я использую команду doc.GetType(), результат будет

doc.GetType()  = {Name = "__ComObject" FullName = "System.__ComObject"} 

Поскольку я не знаю, является ли мой doc.item объектом NotesRichTextItem, я определяю его как объект и впоследствии хочу проверить его тип. Что я не могу, так как возвращаемое значение функций тоже самое, что и для doc. Вот полный код, который я сейчас использую, я загрузил ссылку на Lotus Domino из раздела COM.

Public Sub OpenDocumentLN()
        Try
      Dim ns As New Domino.NotesSession
      Dim db As Domino.NotesDatabase
      Dim doc As Domino.NotesDocument
      Dim view As Domino.NotesView

      If Not (ns Is Nothing) Then
        ns.Initialize()
        db = ns.GetDatabase("", sLotusNotesPath & sLotusNotesDB, False)
        If Not (db Is Nothing) Then
          view = db.GetView(sLotusView)
          doc = view.GetFirstDocument
          While Not doc Is Nothing
            Dim lnNextDoc As Domino.NotesDocument = view.GetNextDocument(doc)

            For Each item As Domino.NotesItem In doc.Items
              Dim rtItem As Object = doc.GetFirstItem(item.Name)

              If rtItem Is Nothing Then Continue For
             If Not rtItem.GetType() = GetType(Domino.NotesRichTextItem) Then Continue For
             ' NEVER reach this part of the code since the IF clause prevents it due to the type problem
              If rtItem.EmbeddedObjects Is Nothing Then Continue For
              For Each o As Domino.NotesEmbeddedObject In rtItem.EmbeddedObjects
                o.ExtractFile(sLotusExportPath & o.Source)
              Next

            Next
            doc = lnNextDoc
          End While

        End If
        db = Nothing
        ns = Nothing
      End If
    Catch ex As Exception

    End Try
  End Sub

Как я могу использовать свой rtitem в качестве NotesRichTextItem, чтобы я мог обработать его соответствующим образом? И почему все объекты обрабатываются как ComObjects?

0 ответов

Другие вопросы по тегам