Freigeben über


Anwenden des custom-Attributs zum Markieren von Get-/Set-Eigenschaften für nicht verwaltetes COM

Aktualisiert: November 2007

Nicht verwaltete COM-Schnittstellen können aufzählbare Objekte sein, die über eine Item-Methode auf Enumerationen zugreifen. In .NET Framework wird diese Methode als .Item deklariert. Auf diese Methode kann nur korrekt zugegriffen werden, indem das Element mit Attributen in der IDL-Datei als propget markiert wird. Dadurch würde jedoch die Signatur der Funktion in der Typbibliothek geändert. Mit diesem custom-Attribut können Sie die Methode nach dem Importieren als propget markieren. Die Syntax dieses custom-Attributs sieht folgendermaßen aus:

GUID = 2941ff83-88d8-4f73-b6a9-bdf8712d000d // for propget

Zudem können Sie mit einem weiteren custom-Attribut eine Methode nach dem Importieren als propput markieren. Die Syntax dieses custom-Attributs sieht folgendermaßen aus:

GUID = 29533527-3683-4364-abc0-db1add822fa2 // for propput

Beachten Sie, dass dieses custom-Attribut nur auf Methoden angewendet werden kann. Außerdem gelten folgende Regeln:

  • Es kann immer nur ein Attribut angewendet werden. Bei Anwendung mehrerer Attribute werden bis auf das erste alle Attribute ignoriert.

  • Bei propget ignoriert das custom-Attribut alle Methodensignaturen ohne Rückgabewert.

  • Bei propput ignoriert das custom-Attribut alle Methodensignaturen ohne Eingabeparameter (Parameter können mit [in] oder [out], jedoch nicht mit [out,retval] gekennzeichnet werden). Außerdem ignoriert das Attribut alle Signaturen mit einem Rückgabewert.

  • Sowohl bei propget als auch bei propput ignoriert das custom-Attribut die GetEnumerator-Methode, wenn sie zusammen mit einer ID (-4) oder einer benutzerdefinierten DISPID (-4) verwendet werden.

  • Verwenden Sie beim Importieren der Typbibliothek mithilfe von Tlbimp.exe stets den Schalter /transform:dispret, wenn Sie das custom-Attribut auf auf Dispatch beschränkte Schnittstellen (Disp-Schnittstellen) angewendet haben.

Beispiel

Das folgende in IDL (Interface Definition Language) geschriebene Beispiel veranschaulicht die Verwendung des propget-Attributs:

[custom(2941ff83-88d8-4f73-b6a9-bdf8712d000d, ""), id(6)] 
HRESULT cget(int i, [out, retval] short *pVal);

Das folgende Beispiel veranschaulicht die Verwendung des propput-Attributs.

[custom(29533527-3683-4364-abc0-db1add822fa2, ""), id(7)] 
HRESULT cset([in] int i);

Siehe auch

Konzepte

Anwenden des custom-Attributs zum Implementieren von IEnumerable

Anwenden des custom-Attributs zum Überschreiben des standardmäßigen COM-Dispatchbezeichners (DISPID)

Importieren einer Typbibliothek als Assembly

Referenz

TypeLibConverter

ITypeLibConverter

Type Library Importer-Tool (Tlbimp.exe)