I'm learning how to write C# from IDL und was ich nicht verstehe ist, warum der Rückgabewert in der Parameterliste als [out, retval] definiert ist. Der gesunde Menschenverstand sagt mir, dass HRESULT der Rückgabetyp sein sollte, aber es scheint keine Auswirkung auf den Code in C# zu haben.Rückgabewert in IDL
Antwort
COM unterstützt keine Ausnahmen. Sie sind ein sehr starkes Sprachlaufzeitimplementierungsdetail, eine C# -Ausnahme ist nichts wie eine C++ - Ausnahme. Das macht HRESULT sehr wichtig, es ist der Ersatz. Jede COM-Methode sollte einen Fehlercode zurückgeben, ein negativer Wert zeigt einen Fehler an.
Aber viele Sprachen unterstützen Ausnahmen. Zulassen, dass die Sprachlaufzeit einen Fehler HRESULT in eine Ausnahme umwandelt. Daher wird der Rückgabewert nicht mehr benötigt.
Dies ermöglicht dem Typbibliothekimportierer und der CLR, die Methodensignatur neu zu schreiben. Damit sieht es wie eine "normale" Funktion aus, die einen nützlichen Rückgabewert hat. Das Attribut [retval] zeigt dies an. Ohne eine wird es eine normale Methode, die void zurückgibt.
Auch erklärt die Relevanz des Attributs [PreserveSig], es unterdrückt dieses Umschreiben. Gelegentlich erforderlich, wenn das HRESULT mehr als nur 0 zurückgibt, um den Erfolg anzuzeigen. COM-Iteratoren benötigen es zum Beispiel für die Next() method.
- 1. Aufrufroutine in IDL-Programmiersprache
- 2. K-Mean Clustering in IDL
- 3. Listen-Syntax in Sparsamkeit IDL
- 4. IDL-Code in Python übersetzen
- 5. Druckfehler in IDL: 32700 + 99
- 6. Problem konvertiert IDL
- 7. IDL bekommen Dateigröße
- 8. Portierung Java-Schnittstelle zu IDL
- 9. Python IDL Brücken: Envi Funktionen
- 10. Array an Subroutine übergeben IDL
- 11. Idl macht große Zahlen = 0,0
- 12. Idl Radius von jedem Pixel
- 13. IDL-Compiler erkennt Werttyp nicht
- 14. Ausführen von IDL Compiled EXE in Python
- 15. Falsche Anzahl von Artikeln in IDL
- 16. Erstellen Sie eine Struktur in IDL
- 17. CoCllass in .idl Importschnittstelle woanders definiert?
- 18. Kann IDL Datum hinzufügen/subtrahieren?
- 19. Werte aus IDL-Array entfernen
- 20. Rückgabewert
- 21. Convert Interface IDL-Datei zu C#
- 22. Anfügen neue Variablen IDL für Loop-Array
- 23. Warum sehen IDL-Standardwerte abgerundet aus?
- 24. IDL-Kompilierung gibt Fehlerstatus nicht zurück
- 25. die Lösung der Gleichung mit IDL
- 26. Java-IDL für gRPC/protobuf (Protocl-Puffer)
- 27. Unterschiede zwischen [in, out] und [out, retval] in COM IDL Definitionen
- 28. Extrahiere einzelne Spalten aus einem Array in IDL
- 29. Ausführen eines IDL-Codes mit Textdateiausgabe in Python
- 30. IDL-Enumeration wird in der Typbibliothek nicht angezeigt