ComContractElement.UserDefinedTypes プロパティ

定義

サービス コントラクトに含めるユーザー定義型 (UDT) のコレクションを取得します。 このクラスは継承できません。

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

プロパティ値

ユーザー定義型 (UDT) のコレクション。

属性

次の例では、この目的で構成ファイルの <userDefinedTypes> セクションに 2 つの特定の UDT を追加する方法を示します。

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

<userDefinedType>要素の属性は次のように定義されます。

  • typeName: 読み取り可能な型名を提供する省略可能な属性。 これはランタイムでは使用されませんが、リーダーが型を区別するのに役立ちます。

  • typeLibID: 型を定義する登録済みタイプ ライブラリを指定する GUID 文字列。

  • typeLibVersion: 型を定義するタイプ ライブラリのバージョンを指定する文字列。

  • typeDefID: 登録済みのタイプ ライブラリ内の特定の UDT 型を指定する GUID 文字列。

サービスが初期化されると、統合ランタイムは指定された型を検索し、指定したコントラクトの既知の型コレクションに追加します。

注釈

COM+ 統合ランタイムは、タイプ ライブラリを調べることでサービスを作成します。 COM+ コンポーネントに VARIANT を渡すメソッドが含まれている場合、システムは実行時前に渡される実際の型を判断できません。 したがって、VARIANT 内でユーザー定義型 (UDT) を渡そうとすると、シリアル化の既知の型ではないため、失敗します。

この問題を回避するには、UDT を構成ファイルに追加して、適切なサービス コントラクトに既知の型として含めることができます。 そのためには、UDT とコントラクト、つまりそれを使用する元の COM インターフェイスを一意に識別する必要があります。

適用対象