<userDefinedType>
Vertegenwoordigt een door de gebruiker gedefinieerd type (UDT) dat moet worden opgenomen in het servicecontract.
<Configuratie>
<system.serviceModel>
<comContracts>
<comContract>
<userDefinedTypes>
<userDefinedType>
Syntax
<comContracts>
<comContract>
<userDefinedTypes>
<userDefinedType name="String"
typeLibID="String"
typeLibVersion="String"
typeDefID="String">
</userDefinedType>
</userDefinedTypes>
</comContract>
</comContracts>
Kenmerken en elementen
In de volgende secties worden kenmerken, onderliggende elementen en bovenliggende elementen beschreven.
Kenmerken
Kenmerk | Beschrijving |
---|---|
name |
Een optioneel kenmerk dat een tekenreeks bevat die de leesbare typenaam bevat. Dit wordt niet gebruikt door de runtime, maar helpt een lezer om de typen te onderscheiden. |
TypeDefID |
Een GUID-tekenreeks die het specifieke UDT-type in de geregistreerde typebibliotheek identificeert. |
TypeLibID |
Een GUID-tekenreeks die de geregistreerde typebibliotheek identificeert die het type definieert. |
TypeLibVersion |
Een tekenreeks die het type bibliotheekversie identificeert waarmee het type wordt gedefinieerd. |
Onderliggende elementen
Geen.
Bovenliggende elementen
Element | Beschrijving |
---|---|
userDefinedTypes |
Een verzameling userDefinedType elementen. |
Opmerkingen
De COM+-integratieruntime maakt services door de typebibliotheek te inspecteren. Wanneer een COM+-onderdeel methoden bevat die een VARIANT doorgeven, kan het systeem niet bepalen welke typen daadwerkelijk moeten worden doorgegeven vóór runtime. Wanneer u een door de gebruiker gedefinieerd type (UDT) probeert door te geven binnen een VARIANT, mislukt dit daarom omdat het geen bekend type voor serialisatie is.
Om dit probleem te omzeilen, kunt u de UDT's toevoegen aan het configuratiebestand, zodat ze kunnen worden opgenomen als bekende typen in het juiste servicecontract. Om dit te doen, moet u de UDT en de contract(en) uniek identificeren, dat wil weten, de oorspronkelijke COM-interface(s) die deze gebruiken.
In het volgende voorbeeld ziet u hoe u twee specifieke UDT's toevoegt aan de <userDefinedTypes
> sectie van het configuratiebestand voor dit doel.
<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>
Wanneer de service wordt geïnitialiseerd, zoekt de Integratieruntime de opgegeven typen op en voegt deze toe aan de verzameling bekende typen voor de opgegeven contracten.