代表應納入服務合約的使用者定義型別(UDT)。
<configuration>
<system.serviceModel>
<comContracts>
<comContract>
<userDefinedTypes>
<userDefinedType>
語法
<comContracts>
<comContract>
<userDefinedTypes>
<userDefinedType name="String"
typeLibID="String"
typeLibVersion="String"
typeDefID="String">
</userDefinedType>
</userDefinedTypes>
</comContract>
</comContracts>
屬性和項目
下列章節說明屬性、子元素和父元素。
Attributes
| Attribute | Description |
|---|---|
name |
一個包含可讀型別名稱字串的可選屬性。 執行時不會使用這點,但有助於讀者區分類型。 |
TypeDefID |
一個用來識別註冊型態庫中特定 UDT 類型的 GUID 字串。 |
TypeLibID |
一個 GUID 字串,用來識別定義該型別的註冊型別庫。 |
TypeLibVersion |
一個用來識別型別庫版本的字串,該版本定義了該型別。 |
子專案
沒有。
父項目
| 元素 | Description |
|---|---|
userDefinedTypes |
一組 userDefinedType 元素。 |
備註
COM+ 整合執行時透過檢查型別函式庫來建立服務。 當 COM+ 元件包含傳遞 VARIANT 的方法時,系統無法在執行前判斷實際要傳遞的型別。 因此,當你嘗試在變體中傳遞使用者定義型別(UDT)時,該型別會失敗,因為它不是已知的序列化型別。
為了避免這個問題,你可以將 UDT 加入設定檔,讓它們能作為已知類型納入相應的服務合約中。 為此,你必須唯一地識別 UDT 及其合約,也就是使用該協定的原始 COM 介面。
以下範例示範在此目的中新增兩個特定的 UDT <userDefinedTypes> 到設定檔區段。
<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>
服務初始化時,整合執行時會查詢指定的類型,並將其加入指定合約的已知類型集合中。