ComContractElement.UserDefinedTypes Egenskap

Definition

Hämtar en samling användardefinierade typer (UDT) som ska ingå i tjänstkontraktet. Det går inte att ärva den här klassen.

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

Egenskapsvärde

Samlingen med användardefinierade typer (UDT).

Attribut

Exempel

I följande exempel visas hur du lägger till två specifika UDT 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" 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>

Elementets <userDefinedType> attribut definieras på följande sätt:

  • typeName: Ett valfritt attribut som innehåller det läsbara typnamnet. Detta används inte av körningen men hjälper en läsare att särskilja typerna.

  • typeLibID: En GUID-sträng som anger det registrerade typbiblioteket som definierar typen.

  • typeLibVersion: En sträng som anger vilken typbiblioteksversion som definierar typen.

  • typeDefID: En GUID-sträng som anger den specifika UDT-typen i det registrerade typbiblioteket.

När tjänsten initieras letar integrationskörningen upp de angivna typerna och lägger till dem i samlingen kända typer för de angivna kontrakten.

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.

För att 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, det vill: de ursprungliga COM-gränssnitten som använder det.

Gäller för