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