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 s ClassInterfaceType hodnotou AutoDispatch, která generuje 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 u sestavení nebo tříd.

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

Rozhraní třídy mohou být rozhraní pouze pro duální nebo dispečerské rozhraní. Volitelně můžete potlačit generování rozhraní třídy a místo toho zadat vlastní rozhraní. Rozhraní třídy zveřejňujete nebo potlačíte 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 přepíší nastavení vlastním atributem.

I když 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 svázat se konkrétním rozložením rozhraní, které se může změnit při vývoji 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 svázat s rozhraním třídy, které poskytuje North jako první metodu v rozhraní třídy a metodu South jako druhou metodu. Nyní zvažte další verzi třídy, která má novou metodu, Eastvložené 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, končí volání metody 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 má vliv také na rozložení rozhraní třídy pro všechny odvozené třídy. Spravovaní klienti, kteří se sváže přímo s třídami, nevykazují stejné problémy s 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řídyClassInterfaceType.None, které člen výčtu označují, ž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 tento Attribute.

(Zděděno od Attribute)
Value

ClassInterfaceType Získá hodnotu, která popisuje, jaký typ rozhraní by se měl vygenerovat 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()

Type Získá aktuální instanci.

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

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

(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ří použádnou kopii aktuálního souboru Object.

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