Freigeben über


Best Practices zum Abrufen und Festlegen von Eigenschaften

Beachten Sie die folgenden empfohlenen Best Practices zum Abrufen und Festlegen von Werten für Eigenschaften:

  • Verweisen Sie auf eine Eigenschaft direkt vom übergeordneten Objekt, um explizite integrierte Eigenschaften von Elementobjekten abzurufen und festzulegen, wie z. B. MailItem.Subject.
  • Verwenden Sie ItemProperties und ItemProperty zum Aufzählen expliziter integrierter Eigenschaften und benutzerdefinierter Eigenschaften sowie zum Abrufen und Festlegen benutzerdefinierter Eigenschaften für Elemente (außer für das DocumentItem -Objekt).
  • Verwenden Sie UserProperties und UserProperty zum Aufzählen, Abrufen und Festlegen benutzerdefinierter Eigenschaften für Elemente (außer für das DocumentItem-Objekt).
  • Verwenden Sie PropertyAccessor zum Abrufen und Festlegen von benutzerdefinierten Eigenschaften für das DocumentItem-Objekt, von integrierten Eigenschaften auf Elementebene, die nicht im Outlook-Objektmodell verfügbar gemacht werden, oder von Eigenschaften für die folgenden Objekte: AddressEntry, AddressList, Attachment, ExchangeDistributionList, ExchangeUser, Folder, Recipient und Store.
  • Um mehrere benutzerdefinierte Eigenschaften abzurufen oder festzulegen, verwenden Sie das PropertyAccessor-Objekt anstelle des UserProperties-Objekts , um die Leistung zu verbessern.
  • Verwenden Sie den MAPI-Namespace "string" statt des MAPI-Namespaces "proptag" oder "id", um benutzerdefinierte Eigenschaften zu erstellen oder darauf zuzugreifen. Verwenden Sie den GUID des Add-Ins als Namespace-GUID.
  • Wenn Sie mithilfe von Namespaces auf Eigenschaften verweisen, sollten Sie darauf achten, dass dabei die Groß-/Kleinschreibung beachtet wird. Während beispielsweise n:schemas:contacts:givenName ein gültiger Namespace ist, ist urn:schemas:contacts:givenname nicht.
  • Verwenden Sie zur Leistungsverbesserung zum Abrufen oder Festlegen mehrerer Eigenschaften PropertyAccessor.GetProperties und PropertyAccessor.SetProperties, statt mehrmals PropertyAccessor.GetProperty und PropertyAccessor.SetProperty einzugeben.
  • Falls das CustomPropertyChange-Ereignis ausgelöst werden soll, wenn sich der Wert einer benutzerdefinierten Eigenschaft auf Elementebene ändert, muss die benutzerdefinierte Eigenschaft in der UserProperties-Auflistung des Elements vorhanden sein. Eine Eigenschaft auf Elementebene, die implizit mithilfe von SetProperty oder SetProperties hinzugefügt wird, wird nicht automatisch Bestandteil der UserProperties-Auflistung des Elements. Eine explizite UserProperties.Add -Anweisung ist erforderlich, um sie einzuschließen.
  • Um zum ersten Mal eine Eigenschaft festzulegen, die von der UserProperties.Add-Methode erstellt wurde, verwenden Sie die UserProperty.Value-Eigenschaft anstelle der SetProperties - und SetProperty-Methoden des PropertyAccessor-Objekts .

In diesem Abschnitt werden die Best Practices zum Speichern von Eigenschaften in einem Objekt beschrieben:

  • Für Elementobjekte werden durch das Aufrufen der Save-Methode des Elements zum Speichern des Elements im aktuellen Ordner auch die Elementeigenschaften gespeichert.
  • Bei Objekten auf Nicht-Elementebene, die nicht über eine Save-Methode (AddressList, Folder, Recipient und Store) verfügen, werden die Eigenschaften für das Objekt implizit gespeichert, wenn PropertyAccessor.DeleteProperty, PropertyAccessor.DeleteProperties, SetProperty oder SetPropertie aufgerufen wird.

In diesem Abschnitt werden die bewährten Methoden beschrieben, um die Typkonvertierung einfach zu halten, wenn Sie propertyAccessor zum Abrufen und Festlegen von Eigenschaften verwenden. Definitionen von MAPI-Eigenschaftstypen, z . B. PT_SYSTIME, finden Sie unter Eigenschaftentypen.

  • Obwohl die meisten Datums-/Uhrzeitwerte von Outlook im UTC-Format (Coordinated Universal Time) gespeichert werden, gibt es keine Garantie dafür, dass alle Eigenschaften des MAPI-Typs _SYSTIME immer UTC zurückgeben. Beim Abrufen einer PT_SYSTIME -Eigenschaft wird ein VT_DATE -Wert zurückgegeben. Wenn Sie eine PT_SYSTIME -Eigenschaft festlegen, sollten Sie sicherstellen, dass Sie die Eigenschaft nicht als lokalen Datum/Uhrzeit-Wert, sondern als UTC-Wert festlegen. Die Methoden GetProperty, SetProperty, GetProerties und SetProperties führen keine Zeitzonenkonvertierung durch. Verwenden Sie die Hilfsmethoden PropertyAccessor.LocalTimeToUTC und PropertyAccessor.UTCToLocalTime für explizite Zeitzonenkonvertierungen.
  • Eine mehrwertige Eigenschaft (Microsoft Visual Basic-Typ _ARRAY) wird als zweidimensionales Array gespeichert, das die gleiche Anzahl von Elementen enthält, wie werte in der Eigenschaft vorhanden sind. Beim Abrufen einer mehrwertigen Eigenschaft wird ein ARRAY-Wert zurückgegeben. Übergeben Sie beim Festlegen einer Mehrfachwerteigenschaft ein zweidimensionales Array (VT_ARRAY) mit einem Element für jeden Wert, den Sie für die Eigenschaft festlegen möchten.
  • Eine binäre Eigenschaft (MAPI-Typ _BINARY) wird als Bytearray und nicht als Zeichenfolge gespeichert. Beim Abrufen einer binären Eigenschaft wird ein Wert vom Typ ARRAY zurückgegeben. Die Methoden GetProperty, SetProperty, GetProperties und SetProperties führen keine Konvertierung zwischen binärem Array und Zeichenfolge durch. Verwenden Sie die Hilfsmethoden PropertyAccessor.BinaryToString und PropertyAccessor.StringToBinary für explizite Konvertierungen.
  • Bestimmte MAPI-Eigenschaftentypen, z. B. _OBJECT, werden vom PropertyAccessor nicht unterstützt. Beim Versuch, solche Eigenschaften abzurufen oder festzulegen, wird der Fehler "Eigenschaft: Der Vorgang wird nicht unterstützt" gemeldet.
  • Stellen Sie beim Abrufen oder Festlegen einer Eigenschaft mithilfe eines Verweises im MAPI-Proptag-Namespace sicher, dass der im Proptag angegebene Typ mit dem zugrunde liegenden Typ der Eigenschaft übereinstimmt. Mit Ausnahme des Falles einer _STRING8-Eigenschaft , bei der Sie entweder den Typ 001E oder 001F im Proptag angeben können, um die Eigenschaft als VT_BSTR abzurufen oder festzulegen, beinhaltet das Abrufen oder Festlegen einer Eigenschaft keine Typkoersion, und ein Fehler wird zurückgegeben, wenn ein Typkonflikt vorliegt.
  • Beim Festlegen einer Eigenschaft kann die Verwendung eines Eigenschaftsverweises im MAPI-Namespace "string" weniger restriktiv sein als ein Eigenschaftsverweis im MAPI-Namespace "proptag". Wenn Sie die Eigenschaft im MAPI-Namespace "string" angeben, ist es nicht unbedingt erforderlich, dass der Wert mit dem zugrunde liegenden Typ der Eigenschaft übereinstimmt. Beispielsweise können Sie einen Zeichenfolgenwert wie _BSTR übergeben, um eine Datum-/Uhrzeit-Eigenschaft wie PT_SYSTIME festzulegen, und der Typ der Eigenschaft wird zum Typ des Werts, der STR ist.

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.