Compartir a través de


<userDefinedType>

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

<configuración>
   <system.serviceModel>
     <comContracts>
       <comContract>
         <userDefinedTypes>
           <userDefinedType>

Syntax

<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, los elementos secundarios y los elementos primarios.

Attributes

Atributo Description
name Atributo opcional que contiene una cadena que proporciona el nombre de tipo legible. El tiempo de ejecución no lo usa, pero ayuda a un lector a distinguir los tipos.
TypeDefID Cadena GUID que identifica el tipo UDT específico dentro de la biblioteca de tipos registrada.
TypeLibID Cadena GUID que identifica la biblioteca de tipos registrada que define el tipo.
TypeLibVersion Cadena que identifica la versión de la biblioteca de tipos que define el tipo.

Elementos secundarios

Ninguno.

Elementos primarios

Elemento Description
userDefinedTypes Colección de userDefinedType elementos.

Observaciones

El entorno de ejecución de integración com+ crea servicios inspeccionando la biblioteca de tipos. Cuando un componente COM+ contiene métodos que pasan un VALOR VARIANT, el sistema no puede determinar los tipos reales que se van a pasar antes del tiempo de ejecución. Por lo tanto, cuando se intenta pasar un tipo definido por el usuario (UDT) dentro de un VARIANT, se produce un error porque no es un tipo conocido para la serialización.

Para evitar este problema, puede agregar los UDT al archivo de configuración para que se puedan incluir como tipos conocidos en el contrato de servicio adecuado. Para ello, debe identificar de forma única el UDT y los contratos, es decir, las interfaces COM originales que lo usan.

En el ejemplo siguiente se muestra cómo agregar dos UDT específicos a la <userDefinedTypes> sección 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, integration Runtime busca los tipos especificados y los agrega a la colección de tipos conocidos para los contratos especificados.

Consulte también