다음을 통해 공유


<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

특성 Description
name 읽을 수 있는 형식 이름을 제공하는 문자열을 포함하는 선택적 특성입니다. 이는 런타임에서 사용되지 않지만 판독기에서 형식을 구분하는 데 도움이 됩니다.
TypeDefID 등록된 형식 라이브러리 내의 특정 UDT 형식을 식별하는 GUID 문자열입니다.
TypeLibID 형식을 정의하는 등록된 형식 라이브러리를 식별하는 GUID 문자열입니다.
TypeLibVersion 형식을 정의하는 형식 라이브러리 버전을 식별하는 문자열입니다.

자식 요소

없음.

부모 요소

요소 Description
userDefinedTypes 요소의 컬렉션입니다 userDefinedType .

비고

COM+ 통합 런타임은 형식 라이브러리를 검사하여 서비스를 만듭니다. COM+ 구성 요소에 VARIANT를 전달하는 메서드가 포함되어 있으면 시스템에서 런타임 전에 전달될 실제 형식을 확인할 수 없습니다. 따라서 VARIANT 내에서 UDT(사용자 정의 형식)를 전달하려고 하면 serialization에 대해 알려진 형식이 아니므로 실패합니다.

이 문제를 피하기 위해 구성 파일에 UDT를 추가하여 적절한 서비스 계약에 알려진 형식으로 포함할 수 있습니다. 이렇게 하려면 UDT 및 계약을 사용하는 원래 COM 인터페이스인 계약을 고유하게 식별해야 합니다.

다음 예제에서는 이 목적을 위해 구성 파일의 섹션에 <userDefinedTypes> 두 개의 특정 UDT를 추가하는 방법을 보여 줍니다.

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

서비스가 초기화되면 통합 런타임은 지정된 형식을 조회하여 지정된 계약의 알려진 형식 컬렉션에 추가합니다.

참고하십시오