Freigeben über


Verwenden von Microsoft.Office.Interop.InfoPath.SemiTrust-Membern, die nicht mit InfoPath kompatibel sind

Wenn Sie Code zu einer Formularvorlage hinzufügen, die mit dem Microsoft Office InfoPath 2003-Toolkit erstellt wurde, oder eine neue Formularvorlage erstellen, die mit dem InfoPath 2003-kompatiblen Objektmodell funktioniert (wie unter Erstellen einer Formularvorlage mithilfe des InfoPath 2003-Objektmodells beschrieben), Microsoft InfoPath verwendet eine Teilmenge der Objekte und Member, die vom Microsoft.Office.Interop.InfoPath.SemiTrust-Namespace bereitgestellt werden und mit denen identisch sind, die von InfoPath 2003 verwendet werden. Dies dient der Kompatibilität mit InfoPath 2003. Das vom Microsoft.Office.Interop.InfoPath.SemiTrust-Namespace bereitgestellte Objektmodell enthält jedoch zusätzliche Objekte und Member, die neue Funktionen bereitstellen, die Office InfoPath 2007 und InfoPath hinzugefügt wurden.

Beispielsweise stellen die PermissionObject- und Permission-Schnittstellen neue Funktionen zur Verwaltung von Informationsrechten bereit, die in InfoPath 2003 nicht verfügbar sind. Diese und andere 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 infoPath 2003-kompatiblem Objektmodell öffnen oder erstellen.

In ähnlicher Weise bietet die _XDocument2-Schnittstelle die gleiche Funktionalität wie InfoPath 2003. Die _XDocument3-Schnittstelle wurde versioniert, um zusätzliche Eigenschaften und Methoden einzuschließen, die in Office InfoPath 2007 hinzugefügt wurden, und die _XDocument4 wurde versioniert, um zusätzliche Eigenschaften und Methoden einzuschließen, die in InfoPath hinzugefügt wurden.

Wenn Sie Objekte und Member verwenden möchten, die in Office InfoPath 2007 oder InfoPath in einem Formularvorlagenprojekt hinzugefügt wurden, das mit dem objektmodell erstellt wurde, das vom Microsoft.Office.Interop.InfoPath.SemiTrust-Namespace bereitgestellt wird, können Sie dies tun, aber Code, der diese Member verwendet, ist 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 Objekte und Member verwenden, die mit InfoPath kompatibel sind oder nicht, werden für browserfähige Formularvorlagen, die in Microsoft SharePoint Server 2010 mit InfoPath Forms Services bereitgestellt werden, nicht unterstützt. Die Geschäftslogik für browserfähige Formularvorlagen muss das neue InfoPath-Objektmodell mit verwaltetem Code verwenden, 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 thisXDocument Variablen und thisApplication auf die InfoPath 2003-kompatiblen Versionen der entsprechenden _XDocument2 - und _Application2-Schnittstellen zu. Um auf die _XDocument3- und _Application3-Schnittstellen zuzugreifen, die Zugriff auf neue Funktionen bieten, müssen Sie eine Objektvariable des typs _XDocument3 oder _Application3 deklarieren und dann das von der - oder thisApplication -thisXDocumentVariable zurückgegebene Objekt in den gleichen Typ umwandeln, wie in den folgenden Beispielen gezeigt.

// 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 der höheren Version _XDocument3 oder __Application3 Typs erstellt haben, können Sie sie verwenden, um auf ein Objekt oder Element zuzugreifen, das neue InfoPath-Funktionen bereitstellt.

Das folgende Beispiel zeigt, wie Sie eine Objektvariable vom Typ _XDocument3 mit der Berechtigungsaccessor-Eigenschaft verwenden, um auf die neue Permission-Schnittstelle und die zugehörige Enabled-Eigenschaft zuzugreifen, um zu bestimmen, ob Berechtigungseinstellungen für das Formular 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.

Beispielsweise bietet das ViewInfo-Objekt keinen Zugriff auf zwei neue Eigenschaften, die nur bei Verwendung des ViewInfo2-Objekts mit Versionsverwaltung verfügbar sind: die Eigenschaften Caption und HideName .

Um auf diese Eigenschaften zuzugreifen, müssen Sie eine Objektvariable vom Typ ViewInfo2 deklarieren und das von der ViewInfos-Eigenschaft der _XDocument3 Objektvariable zurückgegebene Objekt in den ViewInfo2-Typ umwandeln, wie im folgenden Beispiel gezeigt.

// 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())