ClassInterfaceAttribute Osztály

Definíció

A COM-nak közzétett osztályhoz létrehozandó osztályillesztő típusát jelzi, ha egyáltalán létrejön egy felület.

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
Öröklődés
ClassInterfaceAttribute
Attribútumok

Példák

Az alábbi példa bemutatja, hogyan alkalmazhatja az ClassInterfaceAttributeClassInterfaceType értéketAutoDispatch, amely egy felületet hoz létre IDispatch a számáraMyClass.

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

Megjegyzések

Ezt az attribútumot szerelvényekre vagy osztályokra is alkalmazhatja.

Ez az attribútum azt szabályozza, hogy a típustár-exportőr (Tlbexp.exe) automatikusan létrehoz-e osztályfelületet az attribútumként megadott osztályhoz. Az osztály felülete ugyanazt a nevet hordozza, mint maga az osztály, de a név aláhúzásjellel van előtaggal elnevezve. A közzétett osztályfelület tartalmazza a publicfelügyelt osztály összes nem tagját static , beleértve az alaposztálytól örökölt tagokat is. A felügyelt osztályok nem férnek hozzá az osztály felületéhez, és nincs szükségük arra, hogy közvetlenül elérhessék az osztálytagokat. Tlbexp.exe létrehoz egy egyedi interfészazonosítót (IID) az osztály felületéhez.

Az osztályillesztők lehetnek kettős vagy csak küldési felületek. Igény szerint letilthatja az osztály felületének létrehozását, és megadhat helyette egy egyéni felületet. Egy enumerálási tag megadásával közzétehet vagy letilthat egy System.Runtime.InteropServices.ClassInterfaceType osztályfelületet. Amikor egy szerelvényre alkalmaz ClassInterfaceAttribute , az attribútum a szerelvény összes osztályára vonatkozik, kivéve, ha az egyes osztályok a saját attribútumukkal felülbírálják a beállítást.

Bár az osztályillesztők kiküszöbölik az egyes osztályokhoz tartozó interfészek explicit meghatározásának feladatát, az éles alkalmazásokban való használatuk erősen elriasztja őket. A kétosztályos interfészek lehetővé teszik az ügyfelek számára, hogy egy adott felületelrendezéshez kössék azokat, amelyek az osztály fejlődése során változhatnak. Vegyük például azt a felügyelt osztályt, amely egy osztályfelületet tesz elérhetővé a COM-ügyfelek számára. Az osztály első verziója metódusokat North és South. A nem felügyelt ügyfél kapcsolódhat az osztály felületéhez, amely North az osztály felületének első metódusa, a második pedig a metódus South . Most vegye figyelembe az osztály következő verzióját, amely egy új metódussal rendelkezik, Easta metódusok és Northa .South Azok a nem felügyelt ügyfelek, amelyek a régi osztályfelületen keresztül próbálnak csatlakozni az új osztályhoz, hívási metódust East hoznak létre, amikor metódust kívánnak hívni South, mivel a metódusok helye megváltozott a felületen. Ezenkívül az alaposztály elrendezésének bármilyen módosítása az összes származtatott osztály osztályfelületének elrendezésére is hatással van. A közvetlenül az osztályokhoz kötődő felügyelt ügyfelek nem ugyanazokat a verziószámozási problémákat tapasztalják. Az osztályfelület használatára vonatkozó konkrét irányelvekért lásd: COM Callable Burkoló.

A Tlbimp.exe (típustár-importáló) mindig az enumerálási tag importált osztályaira ClassInterfaceType.None vonatkozik, hogy a meglévő COM-osztályok soha ne tegyenek közzé felügyelt felületeket.

Konstruktorok

Name Description
ClassInterfaceAttribute(ClassInterfaceType)

Inicializálja az osztály új példányát ClassInterfaceAttribute a megadott ClassInterfaceType enumerálási taggal.

ClassInterfaceAttribute(Int16)

Inicializálja az osztály új példányát ClassInterfaceAttribute a megadott ClassInterfaceType enumerálási értékkel.

Tulajdonságok

Name Description
TypeId

Ha származtatott osztályban implementálják, ehhez egy egyedi azonosítót Attributekap.

(Öröklődés forrása Attribute)
Value

Lekéri azt az ClassInterfaceType értéket, amely leírja, hogy milyen típusú felületet kell létrehozni az osztályhoz.

Metódusok

Name Description
Equals(Object)

Olyan értéket ad vissza, amely jelzi, hogy ez a példány egyenlő-e egy adott objektummal.

(Öröklődés forrása Attribute)
GetHashCode()

A példány kivonatkódját adja vissza.

(Öröklődés forrása Attribute)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
IsDefaultAttribute()

Ha egy származtatott osztályban felül van bírálva, azt jelzi, hogy a példány értéke-e a származtatott osztály alapértelmezett értéke.

(Öröklődés forrása Attribute)
Match(Object)

Származtatott osztály felülírásakor egy olyan értéket ad vissza, amely jelzi, hogy ez a példány egy adott objektummal egyenlő-e.

(Öröklődés forrása Attribute)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

Explicit interfész-implementációk

Name Description
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Névkészletet képez le a küldési azonosítók megfelelő készletére.

(Öröklődés forrása Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Lekéri egy objektum típusadatait, amelyek a felület típusadatainak lekérésére használhatók.

(Öröklődés forrása Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Lekéri az objektumok által biztosított típusinformációs felületek számát (0 vagy 1).

(Öröklődés forrása Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Hozzáférést biztosít az objektumok által közzétett tulajdonságokhoz és metódusokhoz.

(Öröklődés forrása Attribute)

A következőre érvényes:

Lásd még