Compartir a través de


<userDefinedType>

Representa un tipo definido por el usuario (UDT) que se va a incluir en el contrato del servicio.

Jerarquía del esquema

<<system.serviceModel>>
  <comContracts>
    <comContract>
      <userDefinedTypes>

Sintaxis

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

Atributos y elementos

En las siguientes secciones se describen los atributos, elementos secundarios y elementos primarios.

Atributos

Atributo Descripción

name

Un atributo opcional que contiene una cadena que proporciona el nombre de tipo legible. El tiempo de ejecución no lo usa, pero ayuda a que un lector distinga los tipos.

TypeDefID

Una cadena GUID que identifica el tipo UDT concreto dentro de la biblioteca de tipos registrados.

TypeLibID

Una cadena GUID que identifica la biblioteca de tipos registrados que define el tipo.

TypeLibVersion

Una cadena que identifica la versión de biblioteca de tipos que define el tipo.

Elementos secundarios

Ninguna.

Elementos primarios

Elemento Descripción

userDefinedTypes

Una colección de elementos de userDefinedType.

Notas

El tiempo de ejecución de integración de COM+ crea los servicios mediante la inspección de la biblioteca de tipos. Cuando un componente de COM+ contiene métodos que pasan una VARIANTE, el sistema no puede determinar los tipos reales que se van a pasar antes del tiempo de ejecución. Por consiguiente, al intentar pasar un tipo definido por el usuario dentro de una VARIANTE , se produce un error porque no es un tipo conocido para la serialización.

Para prevenir este problema, puede agregar los UDT al archivo de configuración para que puedan estar incluidos como tipos conocidos en el contrato del servicio adecuado. Para ello, tiene que identificar de manera unívoca el UDT y los contratos, es decir, las interfaces COM originales que lo utilizan.

El ejemplo siguiente muestra la adición de dos UDT concretos a la sección <userDefinedTypes> del archivo de configuración para este propósito.

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

Cuando se inicializa el servicio, el tiempo de ejecución de integración busca los tipos especificados y los agrega a la colección de tipos conocidos para los contratos especificados.

Vea también

Referencia

UserDefinedTypes
ComUdtElementCollection
ComUdtElement

Conceptos

<comContracts>

Otros recursos

Integrating with COM+ Applications
How to: Configure COM+ Service Settings