Vorgehensweise: Verwenden von nicht mit InfoPath 2003 kompatiblen Microsoft.Office.Interop.InfoPath.SemiTrust-Membern

Wenn Sie einer Formularvorlage, die mit dem Microsoft Office InfoPath 2003 Toolkit erstellt wurde, Code hinzufügen oder eine neue Formularvorlage erstellen, die das mit InfoPath 2003 kompatible Objektmodell verwendet (wie unter Vorgehensweise: Erstellen einer Formularvorlage mit verwaltetem Code mit dem InfoPath 2003-Objektmodell beschrieben), wird von Microsoft Office InfoPath 2007 standardmäßig ein Subset der von dem Microsoft.Office.Interop.InfoPath.SemiTrust-Namespace bereitgestellten Objekte und Member verwendet, die mit den von InfoPath 2003 verwendeten übereinstimmen. Dies dient der Kompatibilität mit InfoPath 2003. Das von dem Microsoft.Office.Interop.InfoPath.SemiTrust-Namespace bereitgestellte Objektmodell enthält jedoch zusätzliche Objekte und Member mit neuer Funktionalität, die InfoPath 2007 hinzugefügt wurde.

So bieten die Schnittstellen PermissionObject und Permission beispielsweise völlig neue Funktionen zur Verwaltung von Informationsrechten (Information Rights Management, IRM), die in InfoPath 2003 nicht verfügbar sind. Diese Funktionen und andere völlig neue Objekte, die dem Microsoft.Office.Interop.InfoPath.SemiTrust-Namespace hinzugefügt wurden, sind standardmäßig nicht verfügbar, wenn Sie eine Formularvorlage mit verwaltetem Code mit dem mit InfoPath 2003 kompatiblen Objektmodell öffnen oder erstellen.

Die _XDocument2-Schnittstelle bietet zwar dieselbe Funktionalität wie InfoPath 2003, diese Version der _XDocument3-Schnittstelle verfügt aber noch über zusätzliche Eigenschaften und Methoden, die InfoPath 2007 hinzugefügt wurden.

Wenn Sie Objekte und Member verwenden möchten, die InfoPath 2007 in einem Formularvorlagenprojekt hinzugefügt wurden, das mit dem vom Microsoft.Office.Interop.InfoPath.SemiTrust-Namespace bereitgestellten Objektmodell erstellt wurde, können Sie so verfahren. Der Code, der diese Member verwendet, ist jedoch nicht mit InfoPath 2003 kompatibel.

Hinweis

Alle Formularvorlagen mit Geschäftslogik, die mithilfe des vom Microsoft.Office.Interop.InfoPath.SemiTrust-Namespace bereitgestellten Objektmodells erstellt wurden, unabhängig davon, ob sie mit InfoPath 2007 kompatible Objekte und Member verwenden, werden für browserfähige Formularvorlagen nicht unterstützt, die für Office Forms Server 2007 oder Microsoft Office SharePoint Server 2007 mit InfoPath Forms Services bereitgestellt wurden. Von der Geschäftslogik für browserfähige Formularvorlagen muss das neue InfoPath-Objektmodell mit verwaltetem Code verwendet werden, das vom Microsoft.Office.InfoPath-Namespace bereitgestellt wird.

Beispiel

Erstellen einer XDocument- oder Anwendungsobjektvariablen zum Zugreifen auf neue Objektmodellmember

Damit Sie auf die neuen im Microsoft.Office.Interop.InfoPath.SemiTrust-Namespace verfügbaren Objekte und Member zugreifen können, müssen Sie Objektvariablen deklarieren und in die richtige Version der Schnittstelle umwandeln, die diese Member implementiert. Standardmäßig greifen die Variablen thisXDocument und thisApplication auf die mit InfoPath 2003 kompatiblen Versionen der entsprechenden Schnittstellen _XDocument2 und _Application2 zu. Zum Zugreifen auf die Schnittstellen _XDocument3 und _Application3, die Zugriff auf die neue Funktionalität bieten, müssen Sie eine Objektvariable vom Typ _XDocument3 oder _Application3 deklarieren und sie dann in das von der thisXDocument- oder der thisApplication-Variable zurückgegebene Objekt desselben Typs umwandeln, wie in den folgenden Beispielen dargestellt.

// Declare an object variable of type _XDocument3 and
// cast the object returned by the thisXDocument variable to
// the same type.
_XDocument3 thisXDocument3 = (_XDocument3)thisXDocument;
' Declare an object variable of type _XDocument3 and
' cast the object returned by the thisXDocument variable to
' the same type.
Dim thisXDocument3 As _XDocument3 = _
   DirectCast(thisXDocument, _XDocument3)
// Declare an object variable of type _Application3 and
// cast the object returned by the thisApplication variable to
// the same type.
_Application3 thisApplication3 = (_Application3)thisXDocument;
' Declare an object variable of type _Application3 and
' cast the object returned by the thisXApplication variable to
' the same type.
Dim thisDocument As _XDocument3 = _
   DirectCast(thisXDocument, _XDocument3)

Zugreifen auf ein neues Objekt von der XDocument- oder Anwendungsobjektvariable aus mithilfe einer Accessoreigenschaft

Nachdem Sie eine Variable aus dem späteren Typ version _XDocument3 oder _Application3 erstellt haben, können Sie sie für den Zugriff auf ein Objekt oder einen Member verwenden, das bzw. der neue InfoPath 2007-Funktionalität bietet.

Im folgenden Beispiel wird dargestellt, wie eine Objektvariable vom Typ _XDocument3 mit der Permission-Accessoreigenschaft zum Zugreifen auf die neue Permission-Schnittstelle und ihre Enabled-Eigenschaft verwendet wird, um zu bestimmen, ob für das Formular Berechtigungseinstellungen aktiviert sind.

// Declare an object variable of type _XDocument3 and
// cast the object returned by the thisXDocument variable to
// the same type.
_XDocument3 thisXDocument3 = (_XDocument3)thisXDocument;

// Use the object variable to access the later version object and
// property.
thisXDocument.UI.Alert(thisDocument3.Permission.Enabled.ToString());
' Declare an object variable of type _XDocument3 and
' cast the object returned by the thisXDocument variable to
' the same type.
Dim thisXDocument3 As _XDocument3 = _
   DirectCast(thisXDocument, _XDocument3)

' Use the object variable to access the later version object and
' property.
thisXDocument.UI.Alert(thisDocument3.Permission.Enabled.ToString())

Zugreifen auf ein Versionsobjekt und Umwandeln in den Versionstyp

Wenn einem Objekt, das im InfoPath 2003-Objektmodell vorhanden war, neue Eigenschaften oder Methoden hinzugefügt werden, hat das Objekt, das diese neuen Member implementiert, einen Versionsnamen.

Das ViewInfo-Objekt bietet beispielsweise keinen Zugriff auf zwei neue Eigenschaften, die nur dann verfügbar sind, wenn das ViewInfo2-Versionsobjekt verwendet wird: die Eigenschaften Caption und HideName.

Damit Sie auf diese Eigenschaften zugreifen können, müssen Sie eine Objektvariable vom Typ ViewInfo2 deklarieren und das von der ViewInfos-Eigenschaft der _XDocument3-Objektvariablen zurückgegebene Objekt in den Typ ViewInfo2 umwandeln, wie im folgenden Beispiel dargestellt.

// Declare an object variable of type _XDocument3 and
// cast the object returned by the thisXDocument variable to
// the same type.
_XDocument3 thisXDocument3 = (_XDocument3)thisXDocument;

// Declare an object variable of type ViewInfo2 and cast the object 
// returned by the ViewInfos property to that type.
ViewInfo2 thisView = (ViewInfo2)thisXDocument3.ViewInfos["View2"];

// Display the value of the new HideName property.
thisXDocument3.UI.Alert(thisView.HideName.ToString());
' Declare an object variable of type _XDocument3 and
' cast the object returned by the thisXDocument variable to
' the same type.
Dim thisXDocument3 As _XDocument3 = _
   DirectCast(thisXDocument, _XDocument3)

' Declare an object variable of type ViewInfo2 and cast the object 
' returned by the ViewInfos property to that type.
Dim thisView As ViewInfo2 = _
   DirectCast(thisXDocument3.ViewInfos("View2"), ViewInfo2)

' Display the value of the new HideName property.
thisXDocument3.UI.Alert(thisView.HideName.ToString())