Udostępnij za pośrednictwem


ComContractElement.UserDefinedTypes Właściwość

Definicja

Pobiera kolekcję typów zdefiniowanych przez użytkownika (UDT), która ma zostać uwzględniona w kontrakcie usługi. Klasa ta nie może być dziedziczona.

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

Wartość właściwości

Kolekcja typów zdefiniowanych przez użytkownika (UDT).

Atrybuty

Przykłady

W poniższym przykładzie pokazano dodanie dwóch określonych tras zdefiniowanych przez użytkownika do <userDefinedTypes> sekcji pliku konfiguracji w tym celu.

<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>

Atrybuty <userDefinedType> elementu są definiowane w następujący sposób:

  • typeName: opcjonalny atrybut, który zapewnia czytelną nazwę typu. Nie jest to używane przez środowisko uruchomieniowe, ale pomaga czytelnikowi odróżnić typy.

  • typeLibID: ciąg identyfikatora GUID określający zarejestrowaną bibliotekę typów, która definiuje typ.

  • typeLibVersion: ciąg określający wersję biblioteki typów, która definiuje typ.

  • typeDefID: Ciąg identyfikatora GUID określający określony typ UDT w bibliotece zarejestrowanych typów.

Po zainicjowaniu usługi środowisko Integration Runtime wyszukuje określone typy i dodaje je do kolekcji znanych typów dla określonych kontraktów.

Uwagi

Środowisko Integration Runtime COM+ tworzy usługi, sprawdzając bibliotekę typów. Gdy składnik COM+ zawiera metody, które przechodzą wariant, system nie może określić rzeczywistych typów, które mają być przekazywane przed środowiskiem uruchomieniowym. W związku z tym próba przekazania typu zdefiniowanego przez użytkownika (UDT) w ramach wariantu kończy się niepowodzeniem, ponieważ nie jest to znany typ serializacji.

Aby obejść ten problem, można dodać trasy zdefiniowane przez użytkownika do pliku konfiguracji, aby można je było uwzględnić jako znane typy w odpowiednim kontrakcie usługi. Aby to zrobić, należy jednoznacznie zidentyfikować udT i kontrakty, czyli oryginalne interfejsy COM, które go używają.

Dotyczy