Aracılığıyla paylaş


ComContractElement.UserDefinedTypes Özellik

Tanım

Hizmet sözleşmesine dahil edilecek Kullanıcı Tanımlı Türler (UDT) koleksiyonunu alır. Bu sınıf devralınamaz.

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

Özellik Değeri

ComUdtElementCollection

Kullanıcı Tanımlı Türler (UDT) koleksiyonu.

Öznitelikler

Örnekler

Aşağıdaki örnekte, bu amaçla yapılandırma dosyasının <userDefinedTypes> bölümüne iki belirli UDT eklenmesi gösterilmektedir.

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

öğesinin <userDefinedType> öznitelikleri aşağıdaki gibi tanımlanır:

  • typeName: Okunabilir tür adını sağlayan isteğe bağlı bir öznitelik. Bu çalışma zamanı tarafından kullanılmaz, ancak okuyucunun türleri ayırt etmesine yardımcı olur.

  • typeLibID: Türü tanımlayan kayıtlı tür kitaplığını belirten bir GUID dizesi.

  • typeLibVersion: Türü tanımlayan tür kitaplığı sürümünü belirten bir dize.

  • typeDefID: Kayıtlı tür kitaplığındaki belirli UDT türünü belirten bir GUID dizesi.

Hizmet başlatıldığında, tümleştirme çalışma zamanı belirtilen türleri arar ve bunları belirtilen sözleşmeler için bilinen türler koleksiyonuna ekler.

Açıklamalar

COM+ tümleştirme çalışma zamanı, tür kitaplığını inceleyerek hizmetler oluşturur. BIR COM+ bileşeni VARIANT geçiren yöntemler içerdiğinde, sistem çalışma zamanından önce geçirilecek gerçek türleri belirleyemez. Bu nedenle, bir VARIANT içinde Kullanıcı Tanımlı Tür (UDT) geçirmeyi denediğinizde, serileştirme için bilinen bir tür olmadığından başarısız olur.

Bu sorunu aşmak için UDT'leri yapılandırma dosyasına ekleyerek uygun hizmet sözleşmesine bilinen türler olarak eklenebilmesini sağlayabilirsiniz. Bunu yapmak için UDT'yi ve sözleşmeleri, yani bunu kullanan özgün COM arabirimlerini benzersiz olarak tanımlamanız gerekir.

Şunlara uygulanır