Sdílet prostřednictvím


<typ userDefinedType>

Představuje uživatelem definovaný typ (UDT), který má být součástí kontraktu služby.

<Konfigurace>
  <System.servicemodel>
    <comContracts>
      <comContract>
        <userDefinedTypes>
          <typ userDefinedType>

Syntax

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

Atributy a elementy

Následující části popisují atributy, podřízené prvky a nadřazené prvky.

Atributy

Atribut Popis
name Volitelný atribut, který obsahuje řetězec, který poskytuje čitelný název typu. Modul runtime ho nepoužívá, ale pomáhá čtenáři rozlišovat typy.
TypeDefID Řetězec GUID, který identifikuje konkrétní typ UDT v rámci registrované knihovny typů.
TypeLibID Řetězec GUID, který identifikuje knihovnu registrovaných typů, která definuje typ.
TypeLibVersion Řetězec, který identifikuje verzi knihovny typů, která definuje typ.

Podřízené elementy

Žádné

Nadřazené elementy

Element Popis
userDefinedTypes Kolekce userDefinedType prvků.

Poznámky

Prostředí COM+ Integration Runtime vytváří služby kontrolou knihovny typů. Pokud komponenta modelu COM+ obsahuje metody, které předávají variantu, systém nemůže určit skutečné typy, které mají být předány před modulem runtime. Proto při pokusu o předání uživatelem definovaný typ (UDT) v rámci VARIANT, selže, protože to není známý typ pro serializaci.

Chcete-li tento problém obejít, můžete přidat trasy definované uživatelem do konfiguračního souboru, aby mohly být zahrnuty jako známé typy v příslušném kontraktu služby. K tomu musíte jednoznačně identifikovat UDT a kontrakty, tj. původní rozhraní MODELU COM, které ho používají.

Následující příklad ukazuje přidání dvou konkrétních UDT do <userDefinedTypes> oddílu konfiguračního souboru pro tento účel.

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

Při inicializaci služby vyhledá prostředí Integration Runtime zadané typy a přidá je do kolekce známých typů pro zadané kontrakty.

Viz také