Anwenden des custom-Attributs zum Markieren von Get-/Set-Eigenschaften für nicht verwaltetes COM
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
Referenz
Tlbimp.exe (Type Library Importer-Tool)
Konzepte
Anwenden des custom-Attributs zum Implementieren von IEnumerable
Anwenden des custom-Attributs zum Überschreiben des standardmäßigen COM-Dispatchbezeichners (DISPID)