Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Représente un type défini par l’utilisateur (UDT) qui doit être inclus dans le contrat de service.
<configuration>
<system.serviceModel>
<comContracts>
<comContract>
<userDefinedTypes>
<userDefinedType>
Syntaxe
<comContracts>
<comContract>
<userDefinedTypes>
<userDefinedType name="String"
typeLibID="String"
typeLibVersion="String"
typeDefID="String">
</userDefinedType>
</userDefinedTypes>
</comContract>
</comContracts>
Attributs et éléments
Les sections suivantes décrivent des attributs, des éléments enfants et des éléments parents.
Attributes
| Caractéristique | Descriptif |
|---|---|
name |
Attribut facultatif qui contient une chaîne qui fournit le nom de type lisible. Cela n’est pas utilisé par le runtime, mais permet à un lecteur de distinguer les types. |
TypeDefID |
Chaîne GUID qui identifie le type UDT spécifique dans la bibliothèque de types inscrite. |
TypeLibID |
Chaîne GUID qui identifie la bibliothèque de types inscrite qui définit le type. |
TypeLibVersion |
Chaîne qui identifie la version de la bibliothèque de types qui définit le type. |
Éléments enfants
Aucun.
Éléments parents
| Élément | Descriptif |
|---|---|
userDefinedTypes |
Collection d’éléments userDefinedType . |
Remarques
Le runtime d’intégration COM+ crée des services en inspectant la bibliothèque de types. Lorsqu’un composant COM+ contient des méthodes qui passent un VARIANT, le système ne peut pas déterminer les types réels à passer avant l’exécution. Par conséquent, lorsque vous tentez de passer un type défini par l’utilisateur (UDT) dans un VARIANT, il échoue, car il n’est pas un type connu pour la sérialisation.
Pour contourner ce problème, vous pouvez ajouter les UDT au fichier de configuration afin qu’ils puissent être inclus en tant que types connus sur le contrat de service approprié. Pour ce faire, vous devez identifier de manière unique l’UDT et le ou les contrats, autrement dit l’interface COM d’origine qui l’utilise.
L’exemple suivant illustre l’ajout de deux UDT spécifiques à la <userDefinedTypes> section du fichier de configuration à cet effet.
<comContracts>
<comContract contract="{5163B1E7-F0CF-4B6A-9A02-4AB654F34284}"
namespace="http://tempuri.org/5163B1E7-F0CF-4B6A-9A02-4AB654F34284"
name="_Broker"
requireSession="true">
<userDefinedTypes>
<userDefinedType name="CustomerType"
typeLibID="{91DC728C-4F1A-45de-A9B6-B538E209CEA6}"
typeLibVersion="1.0"
typeDefID="{D129765C-F211-434e-825A-9A63198C41F2}">
</userDefinedType>
<userDefinedType name="AddressType"
typeLibID="{91DC728C-4F1A-45de-A9B6-B538E209CEA6}"
typeLibVersion="1.0"
typeDefID="{4616AE0D-687A-43B7-BC63-141AE3DFD099}">
</userDefinedType>
</userDefinedTypes>
<exposedMethods>
<exposedMethod name="BuyStock" />
<exposedMethod name="SellStock" />
<exposedMethod name="ExecuteTransaction" />
</exposedMethods>
</comContract>
</comContracts>
Lorsque le service est initialisé, le runtime d’intégration recherche les types spécifiés et les ajoute à la collection de types connus pour les contrats spécifiés.