ComContractElement.UserDefinedTypes Eigenschap

Definitie

Hiermee haalt u een verzameling door de gebruiker gedefinieerde typen (UDT) op die moeten worden opgenomen in het servicecontract. Deze klasse kan niet worden overgenomen.

public:
 property System::ServiceModel::Configuration::ComUdtElementCollection ^ UserDefinedTypes { System::ServiceModel::Configuration::ComUdtElementCollection ^ get(); };
[System.Configuration.ConfigurationProperty("userDefinedTypes")]
public System.ServiceModel.Configuration.ComUdtElementCollection UserDefinedTypes { get; }
[<System.Configuration.ConfigurationProperty("userDefinedTypes")>]
member this.UserDefinedTypes : System.ServiceModel.Configuration.ComUdtElementCollection
Public ReadOnly Property UserDefinedTypes As ComUdtElementCollection

Waarde van eigenschap

De verzameling door de gebruiker gedefinieerde typen (UDT).

Kenmerken

Voorbeelden

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" requiresSession="true">
    <userDefinedTypes>
      <userDefinedType name="CustomerType"
         typeLibID="{91DC728C-4F1A-45de-A9B6-B538E209CEA6}"
         typeLibVersion="1.0"
         typeDefID="{D129765C-F211-434e-825A-9A63198C41F2}" />          
      <userDefinedType name="AddressType"
         typeLibID="{91DC728C-4F1A-45de-A9B6-B538E209CEA6}"
         typeLibVersion="1.0"
         typeDefID="{4616AE0D-687A-43B7-BC63-141AE3DFD099}" />          
    </userDefinedTypes>
    <exposedMethods>
      <add exposedMethod ="BuyStock" />
      <add exposedMethod ="SellStock" />
      <add exposedMethod ="ExecuteTransaction" />
    </exposedMethods>
  </comContract>
</comContracts>

De kenmerken van het <userDefinedType> element worden als volgt gedefinieerd:

  • typeName: Een optioneel kenmerk dat de leesbare typenaam biedt. Dit wordt niet door de runtime gebruikt, maar helpt een lezer om de typen te onderscheiden.

  • typeLibID: Een GUID-tekenreeks die de geregistreerde typebibliotheek aangeeft waarmee het type wordt gedefinieerd.

  • typeLibVersion: Een tekenreeks die de typebibliotheekversie aangeeft die het type definieert.

  • typeDefID: een GUID-tekenreeks die het specifieke UDT-type in de bibliotheek met geregistreerde typen aangeeft.

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.

Opmerkingen

De COM+ Integration Runtime maakt services door de typebibliotheek te inspecteren. Wanneer een COM+-onderdeel methoden bevat die een VARIANT doorgeven, kan het systeem niet bepalen welke werkelijke typen vóór runtime moeten worden doorgegeven. Wanneer u een UDT (User Defined Type) binnen een VARIANT probeert door te geven, mislukt dit omdat het geen bekend type is voor serialisatie.

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. Hiervoor moet u de UDT en de contract(en), dat wil zeggen, de oorspronkelijke COM-interface(s) die deze gebruikt, uniek identificeren.

Van toepassing op