Sdílet prostřednictvím


ClassInterfaceAttribute Třída

Definice

Označuje typ rozhraní třídy, který se má vygenerovat pro třídu vystavenou modelu COM, pokud je rozhraní vygenerováno vůbec.

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
Dědičnost
ClassInterfaceAttribute
Atributy

Příklady

Následující příklad ukazuje, jak použít ClassInterfaceAttribute hodnotu s ClassInterfaceType hodnotou AutoDispatch, která vygeneruje IDispatch rozhraní pro MyClass.

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

Poznámky

Tento atribut můžete použít pro sestavení nebo třídy.

Tento atribut určuje, zda exportér knihovny typů (Tlbexp.exe) automaticky vygeneruje rozhraní třídy pro třídu s atributem. Rozhraní třídy nese stejný název jako samotná třída, ale název má předponu s podtržítkem. Při zveřejnění rozhraní třídy obsahuje všechny public, které nejsou static členy spravované třídy, včetně členů zděděných z její základní třídy. Spravované třídy nemají přístup k rozhraní třídy a nemusí, protože mají přímý přístup ke členům třídy. Tlbexp.exe vygeneruje identifikátor jedinečného rozhraní (IID) pro rozhraní třídy.

Rozhraní tříd mohou být duální rozhraní nebo rozhraní jen pro odesílání. Volitelně můžete potlačit generování rozhraní třídy a místo toho poskytnout vlastní rozhraní. Zpřístupněte nebo potlačíte rozhraní třídy zadáním člena výčtu System.Runtime.InteropServices.ClassInterfaceType . Pokud použijete ClassInterfaceAttribute u sestavení, atribut se vztahuje ke všem třídám v sestavení, pokud jednotlivé třídy nepřepíší nastavení vlastním atributem.

Přestože rozhraní tříd eliminují úlohu explicitního definování rozhraní pro každou třídu, jejich použití v produkčních aplikacích se důrazně nedoporučuje. Rozhraní duální třídy umožňují klientům vytvořit vazbu na konkrétní rozložení rozhraní, které se může měnit s vývojem třídy. Představte si například spravovanou třídu, která zpřístupňuje rozhraní třídy klientům modelu COM. První verze třídy obsahuje metody North a South. Nespravovaný klient může vytvořit vazbu na rozhraní třídy, které poskytuje North jako první metodu v rozhraní třídy a metodu South jako druhou metodu. Teď zvažte další verzi třídy, která má novou metodu , Eastvloženou mezi metody North a South. Nespravované klienty, kteří se snaží vytvořit vazbu na novou třídu prostřednictvím starého rozhraní třídy, nakonec volají metodu East , když mají v úmyslu volat metodu South, protože umístění metod v rozhraní se změnilo. Kromě toho jakákoli změna rozložení základní třídy také ovlivňuje rozložení rozhraní třídy pro všechny odvozené třídy. Spravovaní klienti, kteří jsou vázáni přímo na třídy, nemají stejné problémy s správou verzí. Konkrétní pokyny pro použití rozhraní třídy naleznete v tématu Com Callable Wrapper.

Tlbimp.exe (Type Library Importer) se vždy vztahuje na importované třídy člen výčtuClassInterfaceType.None, což značí, že existující třídy modelu COM nikdy nezpřístupňují spravovaná rozhraní.

Konstruktory

ClassInterfaceAttribute(ClassInterfaceType)

Inicializuje novou instanci ClassInterfaceAttribute třídy se zadaným ClassInterfaceType členem výčtu.

ClassInterfaceAttribute(Int16)

Inicializuje novou instanci ClassInterfaceAttribute třídy se zadanou ClassInterfaceType hodnotou výčtu.

Vlastnosti

TypeId

Při implementaci v odvozené třídě získá jedinečný identifikátor pro tuto Attributetřídu .

(Zděděno od Attribute)
Value

ClassInterfaceType Získá hodnotu, která popisuje, který typ rozhraní by měl být generován pro třídu.

Metody

Equals(Object)

Vrací hodnotu, která určuje, zda je tato instance rovna zadanému objektu.

(Zděděno od Attribute)
GetHashCode()

Vrátí hodnotu hash pro tuto instanci.

(Zděděno od Attribute)
GetType()

Získá aktuální Type instanci.

(Zděděno od Object)
IsDefaultAttribute()

Při přepsání v odvozené třídě označuje, zda je hodnota této instance výchozí hodnotou pro odvozenou třídu.

(Zděděno od Attribute)
Match(Object)

Při přepsání v odvozené třídě vrátí hodnotu, která označuje, zda se tato instance rovná zadanému objektu.

(Zděděno od Attribute)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

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

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.

(Zděděno od Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu objektu, které lze použít k získání informací o typu pro rozhraní.

(Zděděno od Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).

(Zděděno od Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.

(Zděděno od Attribute)

Platí pro

Viz také