Utiliser les membres Microsoft.Office.Interop.InfoPath.SemiTrust non compatibles avec InfoPath

Lorsque vous ajoutez du code à un modèle de formulaire créé avec microsoft Office InfoPath 2003 Toolkit ou que vous créez un modèle de formulaire qui fonctionne avec le modèle objet compatible avec InfoPath 2003 (comme décrit dans Créer un modèle de formulaire à l’aide du modèle objet InfoPath 2003), par défaut, Microsoft InfoPath utilise un sous-ensemble des objets et membres fournis par l’espace de noms Microsoft.Office.Interop.InfoPath.SemiTrust identiques à ceux utilisés par InfoPath 2003. Cela permet d'assurer la compatibilité avec InfoPath 2003. Toutefois, le modèle objet fourni par l’espace de noms Microsoft.Office.Interop.InfoPath.SemiTrust inclut des objets et des membres supplémentaires qui fournissent de nouvelles fonctionnalités ajoutées à Office InfoPath 2007 et InfoPath.

Par exemple, les interfaces PermissionObject et Permission fournissent de nouvelles fonctionnalités de gestion des droits relatifs à l’information qui ne sont pas disponibles dans InfoPath 2003. Ces dernières, et d'autres objets entièrement nouveaux ajoutés à l'espace de noms Microsoft.Office.Interop.InfoPath.SemiTrust, ne sont pas disponibles par défaut lorsque vous ouvrez ou créez un modèle de formulaire avec code managé à l'aide du modèle objet compatible InfoPath 2003.

De même, si l’interface _XDocument2 fournit les mêmes fonctionnalités qu’InfoPath 2003 ; l’interface _XDocument3 a été versionnée pour inclure des propriétés et des méthodes supplémentaires qui ont été ajoutées dans Office InfoPath 2007, et le _XDocument4 a été versionné pour inclure des propriétés et méthodes supplémentaires qui ont été ajoutées dans InfoPath.

Si vous souhaitez utiliser des objets et des membres ajoutés dans Office InfoPath 2007 ou InfoPath dans un projet de modèle de formulaire créé à l’aide du modèle objet fourni par l’espace de noms Microsoft.Office.Interop.InfoPath.SemiTrust , vous pouvez le faire, mais le code qui utilise ces membres ne sera pas compatible avec InfoPath 2003.

Remarque

Tous les modèles de formulaire avec logique métier créés à l’aide du modèle objet fourni par l’espace de noms Microsoft.Office.Interop.InfoPath.SemiTrust, qu’ils utilisent des objets et des membres compatibles avec InfoPath ou non, ne sont pas pris en charge pour les modèles de formulaire avec navigateur déployés sur Microsoft SharePoint Server 2010 avec InfoPath Forms Services. La logique métier pour les modèles de formulaire activés pour le navigateur doit utiliser le nouveau modèle objet infoPath avec code managé fourni par l’espace de noms Microsoft.Office.InfoPath .

Exemple

Création d'une variable objet XDocument ou Application pour accéder aux nouveaux membres du modèle objet

Pour accéder aux nouveaux objets et membres qui sont disponibles dans l'espace de noms Microsoft.Office.Interop.InfoPath.SemiTrust, vous devez déclarer et forcer la conversion des variables objet dans la version correcte de l'interface qui implémente ces membres. Par défaut, les thisXDocument variables et thisApplication accèdent aux versions compatibles Avec InfoPath 2003 des interfaces _XDocument2 et _Application2 correspondantes. Pour accéder aux interfaces _XDocument3 et _Application3 qui fournissent l’accès à de nouvelles fonctionnalités, vous devez déclarer une variable objet du type _XDocument3 ou _Application3 , puis convertir l’objet retourné par la thisXDocument variable ou thisApplication vers le même type, comme illustré dans les exemples suivants.

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

Accès à un nouvel objet à partir de la variable objet XDocument ou Application au moyen d'une propriété d'accès

Une fois que vous avez créé une variable de la version ultérieure _XDocument3 ou __Application3 type, vous pouvez l’utiliser pour accéder à un objet ou à un membre qui fournit de nouvelles fonctionnalités InfoPath.

L’exemple suivant montre comment utiliser une variable objet de type _XDocument3 avec la propriété Accesseur Permission pour accéder à la nouvelle interface d’autorisation et à sa propriété Enabled pour déterminer si les paramètres d’autorisation sont activés pour le formulaire.

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

Accès à un objet avec version et conversion forcée au type avec version

Si un objet qui existait dans le modèle objet InfoPath 2003 comporte de nouvelles propriétés et méthodes qui lui ont été ajoutées, l'objet qui implémente ces nouveaux membres présentera un nom avec version.

Par exemple, l’objet ViewInfo ne fournit pas l’accès à deux nouvelles propriétés qui sont disponibles uniquement lors de l’utilisation de l’objet ViewInfo2 versionné : les propriétés Caption et HideName .

Pour accéder à ces propriétés, vous devez déclarer une variable objet de type ViewInfo2 et convertir l’objet retourné par la propriété ViewInfos de la variable objet _XDocument3 au type ViewInfo2 , comme illustré dans l’exemple suivant.

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