Udostępnij za pośrednictwem


<Userdefinedtype>

Reprezentuje typ zdefiniowany przez użytkownika (UDT), który ma zostać uwzględniony w kontrakcie usługi.

<Konfiguracji>
  <System.servicemodel>
    <comContracts>
      <comContract>
        <userDefinedTypes>
          <Userdefinedtype>

Składnia

<comContracts>
  <comContract>
    <userDefinedTypes>
      <userDefinedType name="String"
                       typeLibID="String"
                       typeLibVersion="String"
                       typeDefID="String">
      </userDefinedType>
    </userDefinedTypes>
  </comContract>
</comContracts>

Atrybuty i elementy

W poniższych sekcjach opisano atrybuty, elementy podrzędne i elementy nadrzędne.

Atrybuty

Atrybut Opis
name Opcjonalny atrybut zawierający ciąg, który zapewnia czytelną nazwę typu. Nie jest to używane przez środowisko uruchomieniowe, ale pomaga czytelnikowi odróżnić typy.
TypeDefID Ciąg identyfikatora GUID identyfikujący określony typ UDT w zarejestrowanej bibliotece typów.
TypeLibID Ciąg identyfikatora GUID identyfikujący zarejestrowaną bibliotekę typów, która definiuje typ.
TypeLibVersion Ciąg identyfikujący wersję biblioteki typów definiujący typ.

Elementy podrzędne

Brak.

Elementy nadrzędne

Element Opis
userDefinedTypes Kolekcja userDefinedType elementó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ą.

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

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

Zobacz też