Partilhar via


ComContractElement.UserDefinedTypes Propriedade

Definição

Obtém uma coleção de UDTs (tipos definidos pelo usuário) que deve ser incluída no contrato de serviço. Essa classe não pode ser herdada.

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

Valor da propriedade

ComUdtElementCollection

A coleção de UDT (Tipos Definidos pelo Usuário).

Atributos

Exemplos

O exemplo a seguir demonstra a adição de dois UDTs específicos à <userDefinedTypes> seção do arquivo de configuração para essa finalidade.

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

Os atributos do elemento são definidos da <userDefinedType> seguinte maneira:

  • typeName: um atributo opcional que fornece o nome do tipo legível. Isso não é usado pelo runtime, mas ajuda um leitor a distinguir os tipos.

  • typeLibID: uma cadeia de caracteres GUID que especifica a biblioteca de tipos registrada que define o tipo.

  • typeLibVersion: uma cadeia de caracteres que especifica a versão da biblioteca de tipos que define o tipo.

  • typeDefID: uma cadeia de caracteres GUID que especifica o tipo UDT específico na biblioteca de tipos registrada.

Quando o serviço é inicializado, o runtime de integração pesquisa os tipos especificados e os adiciona à coleção de tipos conhecidos para os contratos especificados.

Comentários

O runtime de integração com+ cria serviços inspecionando a biblioteca de tipos. Quando um componente COM+ contém métodos que passam por uma VARIANT, o sistema não pode determinar os tipos reais a serem passados antes do runtime. Portanto, quando você tenta passar um UDT (Tipo Definido pelo Usuário) em um VARIANT, ele falha porque não é um tipo conhecido para serialização.

Para contornar esse problema, você pode adicionar as UDTs ao arquivo de configuração para que elas possam ser incluídas como tipos conhecidos no contrato de serviço apropriado. Para fazer isso, você precisa identificar exclusivamente o UDT e os contratos, ou seja, as interfaces COM originais que o usam.

Aplica-se a