ComContractElement.UserDefinedTypes Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene una raccolta di tipi definiti dall'utente (UDT) che deve essere inclusa nel contratto di servizio. La classe non può essere ereditata.
public:
property System::ServiceModel::Configuration::ComUdtElementCollection ^ UserDefinedTypes { System::ServiceModel::Configuration::ComUdtElementCollection ^ get(); };
[System.Configuration.ConfigurationProperty("userDefinedTypes")]
public System.ServiceModel.Configuration.ComUdtElementCollection UserDefinedTypes { get; }
[<System.Configuration.ConfigurationProperty("userDefinedTypes")>]
member this.UserDefinedTypes : System.ServiceModel.Configuration.ComUdtElementCollection
Public ReadOnly Property UserDefinedTypes As ComUdtElementCollection
Valore della proprietà
Raccolta di tipi definiti dall'utente (UDT).
- Attributi
Esempio
L'esempio seguente illustra l'aggiunta di due UDT specifici alla <userDefinedTypes>
sezione 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" requiresSession="true">
<userDefinedTypes>
<userDefinedType name="CustomerType"
typeLibID="{91DC728C-4F1A-45de-A9B6-B538E209CEA6}"
typeLibVersion="1.0"
typeDefID="{D129765C-F211-434e-825A-9A63198C41F2}" />
<userDefinedType name="AddressType"
typeLibID="{91DC728C-4F1A-45de-A9B6-B538E209CEA6}"
typeLibVersion="1.0"
typeDefID="{4616AE0D-687A-43B7-BC63-141AE3DFD099}" />
</userDefinedTypes>
<exposedMethods>
<add exposedMethod ="BuyStock" />
<add exposedMethod ="SellStock" />
<add exposedMethod ="ExecuteTransaction" />
</exposedMethods>
</comContract>
</comContracts>
Gli attributi dell'elemento <userDefinedType>
sono definiti come segue:
typeName
: attributo facoltativo che fornisce il nome tipo leggibile. Non viene usato dal runtime, ma aiuta un reader a distinguere i tipi.typeLibID
: stringa GUID che specifica la libreria dei tipi registrata che definisce il tipo.typeLibVersion
: stringa che specifica la versione della libreria dei tipi che definisce il tipo.typeDefID
: stringa GUID che specifica il tipo definito dall'utente all'interno della libreria dei tipi registrati.
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.
Commenti
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 usano.