ClassInterfaceAttribute Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bir arabirim oluşturulursa, COM'a sunulan bir sınıf için oluşturulacak sınıf arabiriminin türünü gösterir.
public ref class ClassInterfaceAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class, Inherited=false)]
public sealed class ClassInterfaceAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class ClassInterfaceAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class, Inherited=false)>]
type ClassInterfaceAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ClassInterfaceAttribute = class
inherit Attribute
Public NotInheritable Class ClassInterfaceAttribute
Inherits Attribute
- Devralma
- Öznitelikler
Örnekler
Aşağıdaki örnekte, için bir IDispatch arabirim MyClassoluşturan değeriyle AutoDispatchClassInterfaceType uygulamasının nasıl uygulanacağı ClassInterfaceAttribute gösterilmektedir.
using namespace System::Runtime::InteropServices;
[ClassInterface(ClassInterfaceType::AutoDispatch)]
public ref class MyClass
{
public:
MyClass(){}
};
using System.Runtime.InteropServices;
[ClassInterface(ClassInterfaceType.AutoDispatch)]
public class MyClass
{
public MyClass() {}
}
Imports System.Runtime.InteropServices
<ClassInterface(ClassInterfaceType.AutoDispatch)> _
Public Class SampleClass
' Insert class members here.
End Class
Açıklamalar
Bu özniteliği derlemelere veya sınıflara uygulayabilirsiniz.
Bu öznitelik, Tür Kitaplığı Verme (Tlbexp.exe) öğesinin öznitelikli sınıf için otomatik olarak bir sınıf arabirimi oluşturup oluşturmadığını denetler. Sınıf arabirimi, sınıfın kendisiyle aynı adı taşır, ancak adın önüne bir alt çizgi eklenir. Kullanıma sunulduğunda, sınıf arabirimi, temel sınıfından publicdevralınan üyeler de dahil olmak üzere yönetilen sınıfın tüm üyelerini static içerir. Yönetilen sınıflar bir sınıf arabirimine erişemez ve sınıf üyelerine doğrudan erişebilecekleri için buna gerek yoktur. Tlbexp.exe, sınıf arabirimi için benzersiz bir arabirim tanımlayıcısı (IID) oluşturur.
Sınıf arabirimleri çift veya yalnızca dağıtım arabirimleri olabilir. İsteğe bağlı olarak, sınıf arabiriminin neslini gizleyebilir ve bunun yerine özel bir arabirim sağlayabilirsiniz. Bir numaralandırma üyesi belirterek System.Runtime.InteropServices.ClassInterfaceType bir sınıf arabirimini kullanıma sunar veya gizlersiniz. Bir derlemeye uyguladığınızda ClassInterfaceAttribute , tek tek sınıflar ayarı kendi özniteliğiyle geçersiz kılmadığı sürece özniteliği derlemedeki tüm sınıflarla ilişkilidir.
Sınıf arabirimleri, her sınıf için arabirimleri açıkça tanımlama görevini ortadan kaldırsa da, üretim uygulamalarında kullanımları kesinlikle önerilmez. İkili sınıf arabirimleri, istemcilerin sınıf geliştikçe değiştirilebilir olan belirli bir arabirim düzenine bağlanmasına olanak tanır. Örneğin, com istemcileri için bir sınıf arabirimini kullanıma sunan yönetilen bir sınıf düşünün. sınıfının ilk sürümü ve Southyöntemlerini North içerir. Yönetilmeyen bir istemci, sınıf arabiriminde ilk yöntem olarak ve ikinci yöntem olarak yöntem South olarak sağlayan North sınıf arabirimine bağlanabilir. Şimdi ve yöntemleri NorthSoutharasına eklenen yeni bir yöntemi Eastolan sınıfının sonraki sürümünü düşünün. Eski sınıf arabirimi aracılığıyla yeni sınıfa bağlamaya çalışan yönetilmeyen istemciler, yöntemini çağırmak East istediklerinde yöntemini çağırır South. Çünkü arabirimdeki yöntemlerin konumlandırılması değişti. Ayrıca, bir temel sınıfın düzeninde yapılan tüm değişiklikler, türetilmiş tüm sınıflar için sınıf arabiriminin düzenini de etkiler. Doğrudan sınıflara bağlanan yönetilen istemciler aynı sürüm oluşturma sorunlarını sergilemez. Sınıf arabirimi kullanmayla ilgili belirli yönergeler için bkz. COM Çağrılabilen Sarmalayıcı.
Tlbimp.exe (Tür Kitaplığı İçeri Aktarıcısı), mevcut COM sınıflarının ClassInterfaceType.None yönetilen arabirimleri hiçbir zaman kullanıma sunmadığını belirtmek için numaralandırma üyesi içeri aktarılan sınıflar için her zaman geçerlidir.
Oluşturucular
| Name | Description |
|---|---|
| ClassInterfaceAttribute(ClassInterfaceType) |
Belirtilen ClassInterfaceAttribute numaralandırma üyesiyle sınıfının yeni bir örneğini ClassInterfaceType başlatır. |
| ClassInterfaceAttribute(Int16) |
Belirtilen ClassInterfaceAttribute numaralandırma değeriyle sınıfının yeni bir örneğini ClassInterfaceType başlatır. |
Özellikler
| Name | Description |
|---|---|
| TypeId |
Türetilmiş bir sınıfta uygulandığında, bu Attributeiçin benzersiz bir tanımlayıcı alır. (Devralındığı yer: Attribute) |
| Value |
ClassInterfaceType Sınıfı için hangi arabirim türünün oluşturulması gerektiğini açıklayan değeri alır. |
Yöntemler
| Name | Description |
|---|---|
| Equals(Object) |
Bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür. (Devralındığı yer: Attribute) |
| GetHashCode() |
Bu örneğin karma kodunu döndürür. (Devralındığı yer: Attribute) |
| GetType() |
Geçerli örneğin Type alır. (Devralındığı yer: Object) |
| IsDefaultAttribute() |
Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin değerinin türetilmiş sınıf için varsayılan değer olup olmadığını gösterir. (Devralındığı yer: Attribute) |
| Match(Object) |
Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür. (Devralındığı yer: Attribute) |
| MemberwiseClone() |
Geçerli Objectbasit bir kopyasını oluşturur. (Devralındığı yer: Object) |
| ToString() |
Geçerli nesneyi temsil eden bir dize döndürür. (Devralındığı yer: Object) |
Belirtik Arabirim Kullanımları
| Name | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Bir ad kümesini karşılık gelen bir dağıtma tanımlayıcısı kümesine eşler. (Devralındığı yer: Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Bir arabirimin tür bilgilerini almak için kullanılabilecek bir nesnenin tür bilgilerini alır. (Devralındığı yer: Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Bir nesnenin sağladığı tür bilgisi arabirimlerinin sayısını alır (0 ya da 1). (Devralındığı yer: Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Bir nesne tarafından kullanıma sunulan özelliklere ve yöntemlere erişim sağlar. (Devralındığı yer: Attribute) |