ClassInterfaceAttribute Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Urč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
- 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 na sestavení nebo třídy.
Tento atribut řídí, zda exportér knihovny typů (Tlbexp.exe) automaticky generuje rozhraní třídy pro atributdu třídy. 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 k členům třídy přímo. Tlbexp.exe vygeneruje jedinečný identifikátor rozhraní (IID) pro rozhraní třídy.
Rozhraní třídy můžou být duální nebo dispečerské rozhraní. Volitelně můžete potlačit generování rozhraní třídy a místo toho zadat vlastní rozhraní. Zpřístupňujete 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 na všechny třídy 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 při vývoji třídy změnit. 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 pokusí svázat s novou třídou prostřednictvím starého rozhraní třídy, skončí 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 váže přímo na třídy, nevykazují stejné problémy se 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, které člen výčtu ClassInterfaceType.None označují, že stávající třídy modelu COM nikdy nezpřístupňují spravované rozhraní.
Konstruktory
| Name | Description |
|---|---|
| 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
| Name | Description |
|---|---|
| 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
| Name | Description |
|---|---|
| Equals(Object) |
Vrátí hodnotu, která určuje, zda je tato instance rovna zadanému objektu. (Zděděno od Attribute) |
| GetHashCode() |
Vrátí kód hash pro tuto instanci. (Zděděno od Attribute) |
| GetType() |
Získá Type aktuální instance. (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 pro odvozenou třídu. (Zděděno od Attribute) |
| Match(Object) |
Při přepsání v odvozené třídě vrátí hodnotu, která určuje, zda se tato instance rovná zadanému objektu. (Zděděno od Attribute) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního 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í
| Name | Description |
|---|---|
| _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) |