共用方式為


<userDefinedType>

代表應納入服務合約的使用者定義型別(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>

服務初始化時,整合執行時會查詢指定的類型,並將其加入指定合約的已知類型集合中。

另請參閱