次の方法で共有


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) のコレクション。

属性

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

<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 インターフェイスを一意に識別する必要があります。

適用対象