ComContractElement.UserDefinedTypes Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Obtém um conjunto de Tipos Definidos pelo Utilizador (UDT) que deve ser incluído no contrato de serviço. Esta 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 de Propriedade
A coleção de Tipos Definidos pelo Utilizador (UDT).
- Atributos
Exemplos
O exemplo seguinte demonstra a adição de dois UDTs específicos à <userDefinedTypes> secção do ficheiro de configuração para este propósito.
<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 <userDefinedType> elemento são definidos da seguinte forma:
typeName: Um atributo opcional que fornece o nome do tipo legível. Isto não é usado pelo runtime, mas ajuda o leitor a distinguir os tipos.typeLibID: Uma cadeia GUID que especifica a biblioteca de tipos registada que define o tipo.typeLibVersion: Uma cadeia que especifica a versão da biblioteca de tipos que define o tipo.typeDefID: Uma cadeia GUID que especifica o tipo UDT específico dentro da biblioteca de tipos registada.
Quando o serviço é inicializado, o runtime de integração procura os tipos especificados e adiciona-os à coleção de tipos conhecidos para os contratos especificados.
Observações
O runtime de integração COM+ cria serviços inspecionando a biblioteca de tipos. Quando um componente COM+ contém métodos que passam um VARIANT, o sistema não pode determinar os tipos reais a passar antes do tempo de execução. Portanto, quando tenta passar um Tipo Definido pelo Utilizador (UTT) dentro de um VARIANTE, falha porque não é um tipo conhecido para serialização.
Para contornar este problema, pode adicionar os UDTs ao ficheiro de configuração para que possam ser incluídos como tipos conhecidos no contrato de serviço apropriado. Para tal, é necessário identificar de forma única o UDT e o(s) contrato(s), ou seja, a(s) interface(s) COM original que o utilizam.