<userDefinedType>
Representerar en användardefinierad typ (UDT) som ska ingå i tjänstkontraktet.
<Konfiguration>
<system.serviceModel>
<comContracts>
<comContract>
<userDefinedTypes>
<userDefinedType>
Syntax
<comContracts>
<comContract>
<userDefinedTypes>
<userDefinedType name="String"
typeLibID="String"
typeLibVersion="String"
typeDefID="String">
</userDefinedType>
</userDefinedTypes>
</comContract>
</comContracts>
Attribut och element
I följande avsnitt beskrivs attribut, underordnade element och överordnade element.
Attribut
Attribut | Beskrivning |
---|---|
name |
Ett valfritt attribut som innehåller en sträng som ger det läsbara typnamnet. Detta används inte av körningen utan hjälper en läsare att skilja mellan typerna. |
TypeDefID |
En GUID-sträng som identifierar den specifika UDT-typen i det registrerade typbiblioteket. |
TypeLibID |
En GUID-sträng som identifierar det registrerade typbiblioteket som definierar typen. |
TypeLibVersion |
En sträng som identifierar den typbiblioteksversion som definierar typen. |
Underordnade element
Inga.
Överordnade element
Element | Beskrivning |
---|---|
userDefinedTypes |
En samling userDefinedType element. |
Kommentarer
COM+-integreringskörningen skapar tjänster genom att granska typbiblioteket. När en COM+-komponent innehåller metoder som skickar en VARIANT kan systemet inte fastställa vilka faktiska typer som ska skickas före körning. När du försöker skicka en användardefinierad typ (UDT) inom en VARIANT misslyckas det därför eftersom det inte är en känd typ för serialisering.
Om du vill kringgå det här problemet kan du lägga till UDT:erna i konfigurationsfilen så att de kan inkluderas som kända typer i lämpligt tjänstkontrakt. För att kunna göra det måste du unikt identifiera UDT och kontrakten, dvs. de ursprungliga COM-gränssnitten som använder den.
I följande exempel visas hur du lägger till två specifika UDT:ar i <userDefinedTypes
> avsnittet i konfigurationsfilen för detta ändamål.
<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>
När tjänsten initieras letar Integration Runtime upp de angivna typerna och lägger till dem i samlingen kända typer för de angivna kontrakten.