Udostępnij przez


<Userdefinedtype>

Reprezentuje typ zdefiniowany przez użytkownika (UDT), który ma zostać uwzględniony w umowie 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.

Attributes

Attribute Description
name Opcjonalny atrybut zawierający ciąg, który zapewnia czytelną nazwę typu. Nie jest on używany przez środowisko uruchomieniowe, ale ułatwia czytelnikowi odróżnienie typów.
TypeDefID Ciąg identyfikatora GUID identyfikujący określony typ UDT w bibliotece zarejestrowanych 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

Żaden.

Elementy nadrzędne

Składnik Description
userDefinedTypes Kolekcja userDefinedType elementów.

Uwagi

Środowisko COM+ Integration Runtime 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żesz dodać identyfikatory ZDEFINIOWANE 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 znanej kolekcji typów dla określonych kontraktów.

Zobacz także