Freigeben über


<userDefinedType>

Stellt einen benutzerdefinierten Typ (UDT) dar, der in den Dienstvertrag eingeschlossen werden soll.

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

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

Attribute und Elemente

Attribute

Attribut Beschreibung

name

Ein optionales Attribut, das eine Zeichenfolge enthält, die den lesbaren Namen des Typs angibt. Dies wird nicht von der Laufzeit verwendet, sondern hilft einem Reader bei der Typunterscheidung.

TypeDefID

Eine GUID-Zeichenfolge, mit der der spezifische UDT-Typ in der registrierten Typbibliothek identifiziert wird.

TypeLibID

Eine GUID-Zeichenfolge, die die registrierte Typbibliothek angibt, mit der der Typ definiert wird.

TypeLibVersion

Eine Zeichenfolge, die die Version der Typbibliothek angibt, mit der der Typ definiert wird.

Untergeordnete Elemente

Keine.

Übergeordnete Elemente

Element Beschreibung

userDefinedTypes

Eine Auflistung von userDefinedType-Elementen.

Hinweise

Durch Überprüfen der Typbibliothek werden von der Laufzeit der COM+-Integration Dienste erstellt. Wenn COM+-Komponenten Methoden enthalten, die einen VARIANT übergeben, können die tatsächlichen Typen, die vor der Laufzeit übergeben werden sollen, vom System nicht bestimmt werden. Aus diesem Grund tritt beim Versuch, einen benutzerdefinierten Typ in einem VARIANT zu übergeben, ein Fehler auf, da der Typ für die Serialisierung nicht bekannt ist.

Sie können jedoch der Konfigurationsdatei die UDTs hinzufügen, sodass diese als bekannte Typen im entsprechenden Dienstvertrag eingefügt werden können, um das Problem zu umgehen. Voraussetzung hierfür ist eine eindeutige Identifizierung des UDT und der Verträge, d. h. der ursprünglich verwendeten COM-Schnittstelle.

Im folgenden Beispiel wird veranschaulicht, wie dem <userDefinedTypes>-Abschnitt der Konfigurationsdatei zwei spezifische UDTs hinzugefügt werden.

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

Beim Initialisieren des Diensts werden die angegebenen Typen von der Integrationslaufzeit gesucht und der Auflistung der bekannten Typen für die angegebenen Verträge hinzugefügt.

Siehe auch

Referenz

UserDefinedTypes
ComUdtElementCollection
ComUdtElement

Konzepte

<comContracts>

Weitere Ressourcen

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