Aracılığıyla paylaş


ClassInterfaceType Sabit listesi

Tanım

Bir sınıf için oluşturulan sınıf arabiriminin türünü tanımlar.

public enum class ClassInterfaceType
public enum ClassInterfaceType
[System.Serializable]
public enum ClassInterfaceType
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum ClassInterfaceType
type ClassInterfaceType = 
[<System.Serializable>]
type ClassInterfaceType = 
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ClassInterfaceType = 
Public Enum ClassInterfaceType
Devralma
ClassInterfaceType
Öznitelikler

Alanlar

AutoDispatch 1

sınıfının yalnızca COM istemcileri için geç bağlamayı desteklediğini gösterir. sınıfı için bir dispinterface , istek üzerine COM istemcilerine otomatik olarak sunulur. Tlbexp.exe tarafından üretilen tür kitaplığı (Tür Kitaplığı Dışarı Aktarıcısı), istemcilerin arabirimin dispinterface DISPID'lerini önbelleğe almasını önlemek için tür bilgilerini içermez. dispinterface istemcileri arabirimine yalnızca geç bağlanabildiğinden sürümünde ClassInterfaceAttribute açıklanan sürüm oluşturma sorunlarını göstermez.

Bu, için ClassInterfaceAttributevarsayılan ayardır.

AutoDual 2

Çift sınıf arabiriminin sınıf için otomatik olarak oluşturulduğunu ve COM'a sunulduğunu gösterir. Sınıf arabirimi için tür bilgileri oluşturulur ve tür kitaplığında yayımlanır. sürümünde açıklanan ClassInterfaceAttributesürüm oluşturma sınırlamaları nedeniyle kullanımı AutoDual kesinlikle önerilmez.

None 0

Sınıf için hiçbir sınıf arabirimi oluşturulmadığını gösterir. Açıkça hiçbir arabirim uygulanmazsa, sınıfı yalnızca arabirim aracılığıyla IDispatch geç bağlanan erişim sağlayabilir. Bu, için ClassInterfaceAttributeönerilen ayardır. kullanımı ClassInterfaceType.None , sınıfı tarafından açıkça uygulanan arabirimler aracılığıyla işlevselliği kullanıma sunmanın tek yoludur.

Tlbexp.exe (Tür Kitaplığı Dışarı Aktarıcısı), sınıf tarafından ortak sınıfın varsayılan arabirimi olarak uygulanan ilk ortak, COM görünür arabirimini kullanıma sunar. .NET Framework 2.0 ve sonraki sürümlerinde, özniteliğini kullanarak ComDefaultInterfaceAttribute COM'a sunulan varsayılan arabirimi belirtebilirsiniz. Sınıfı hiçbir arabirim uygulamazsa, bir temel sınıf tarafından uygulanan ilk ortak, COM görünür arabirimi varsayılan arabirim olur (en son türetilen temel sınıfla başlayıp geriye doğru çalışır). Tlbexp.exe sınıfı veya temel sınıfları arabirimleri uygulamazsa varsayılan arabirim olarak kullanıma sunar _Object .

Örnekler

Bu örnekte, öğesinin ClassInterfaceAttribute bir türe nasıl uygulanacağı ve ayarının nasıl uygulanacağı gösterilmektedir ClassInterfaceType. Bu şekilde tanımlanan sınıflar yönetilmeyen COM'dan kullanılabilir.

using namespace System;
using namespace System::Runtime::InteropServices;

// Have the CLR expose a class interface (derived from IDispatch)
// for this type. COM clients can call the  members of this
// class using the Invoke method from the IDispatch interface.
[ClassInterface(ClassInterfaceType::AutoDispatch)]
public ref class AClassUsableViaCOM
{
public:
    AClassUsableViaCOM() 
    { 
    }

public:
    int Add(int x, int y)
    {
        return x + y;
    }
};

// The CLR does not expose a class interface for this type.
// COM clients can call the members of this class using
// the methods from the IComparable interface.
[ClassInterface(ClassInterfaceType::None)]
public ref class AnotherClassUsableViaCOM : public IComparable
{
public:
    AnotherClassUsableViaCOM() 
    { 
    }

    virtual int CompareTo(Object^ o) = IComparable::CompareTo
    {
        return 0;
    }
};
using System;
using System.Runtime.InteropServices;

// Have the CLR expose a class interface (derived from IDispatch) for this type.
// COM clients can call the  members of this class using the Invoke method from the IDispatch interface.
[ClassInterface(ClassInterfaceType.AutoDispatch)]
public class AClassUsableViaCOM
{
    public AClassUsableViaCOM() { }

    public Int32 Add(Int32 x, Int32 y) { return x + y; }
}

// The CLR does not expose a class interface for this type.
// COM clients can call the members of this class using the methods from the IComparable interface.
[ClassInterface(ClassInterfaceType.None)]
public class AnotherClassUsableViaCOM : IComparable
{
    public AnotherClassUsableViaCOM() { }

    Int32 IComparable.CompareTo(Object o) { return 0; }
}
Imports System.Runtime.InteropServices


' Have the CLR expose a class interface (derived from IDispatch) for this type.
' COM clients can call the  members of this class using the Invoke method from the IDispatch interface.
<ClassInterface(ClassInterfaceType.AutoDispatch)> _
Public Class AClassUsableViaCOM

    Public Sub New()

    End Sub

    Public Function Add(ByVal x As Int32, ByVal y As Int32) As Int32
        Return x + y

    End Function
End Class
' The CLR does not expose a class interface for this type.
' COM clients can call the members of this class using the methods from the IComparable interface.
<ClassInterface(ClassInterfaceType.None)> _
Public Class AnotherClassUsableViaCOM
    Implements IComparable

    Public Sub New()

    End Sub

    Function CompareTo(ByVal o As [Object]) As Int32 Implements IComparable.CompareTo
        Return 0

    End Function 'IComparable.CompareTo
End Class

Açıklamalar

Bu numaralandırma özniteliğiyle ClassInterfaceAttribute birlikte kullanılır.

Şunlara uygulanır

Ayrıca bkz.