Condividi tramite


<tipoDefinitoDaUtente>

Rappresenta un tipo definito dall'utente (UDT) da includere nel contratto di servizio.

Gerarchia dello schema

<system.serviceModel>
  <comContracts>
    <contrattoCom>
      <userDefinedTypes>

Sintassi

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

Attributi ed elementi

Nelle sezioni seguenti vengono descritti attributi, elementi figlio ed elementi padre.

Attributi

Attributo Descrizione

name

Attributo facoltativo contenente una stringa che fornisce il nome tipo leggibile. Non viene utilizzato dal runtime, ma aiuta un reader a distinguere i tipi.

TypeDefID

Stringa GUID che identifica il tipo specifico definito dall'utente all'interno della libreria dei tipi registrati.

TypeLibID

Stringa GUID che identifica la libreria dei tipi registrata che definisce il tipo.

TypeLibVersion

Stringa che identifica la versione della libreria dei tipi che definisce il tipo.

Elementi figlio

Nessuno.

Elementi padre

Elemento Descrizione

userDefinedTypes

Raccolta di elementi userDefinedType.

Osservazioni

Il runtime di integrazione COM+ crea servizi controllando la libreria dei tipi. Quando un componente COM+ contiene metodi che passano una VARIANT, il sistema non può determinare i tipi effettivi da passare prima della fase di esecuzione. Quando si tenta pertanto di passare un tipo definito dall'utente (UDT) all'interno di una VARIANT, l'operazione non riesce perché non è un tipo noto per la serializzazione.

Per aggirare questo problema è possibile aggiungere tipi definiti dall'utente al file di configurazione in modo che possano essere inclusi come tipi noti nel contratto di servizio appropriato. A tale scopo, è necessario identificare in modo univoco i tipi definiti dall'utente e i contratti, ovvero le interfacce COM originali che li utilizzano.

Nell'esempio seguente viene illustrato come aggiungere due specifici tipi definiti dall'utente alla sezione <userDefinedTypes> del file di configurazione per questo scopo.

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

Quando il servizio viene inizializzato, il runtime di integrazione ricerca i tipi specificati e li aggiunge alla raccolta dei tipi noti per i contratti specificati.

Vedere anche

Riferimento

UserDefinedTypes
ComUdtElementCollection
ComUdtElement

Concetti

<comContracts>

Altre risorse

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