Zuhause Entwicklung Was sind Richtungsattribute in c? - Definition aus techopedia

Was sind Richtungsattribute in c? - Definition aus techopedia

Inhaltsverzeichnis:

Anonim

Definition - Was bedeutet Richtungsattribute?

Richtungsattribute in C # sind Tags, die zum Angeben von Objektmethodenparametern mit Informationen zum gerichteten Datenfluss zwischen dem Aufrufer und dem Angerufenen verwendet werden.


Directional-Attribute steuern das Marshalling der Richtungs- und Rückgabewerte des Methodenparameters, wenn ein Objekt für die Übertragung über eine Anwendung oder eine Prozessgrenze vorbereitet wird. Richtungsattribute werden angewendet, um das Laufzeit-Marshalling zu ändern, während verwalteter Code, der von der Common Language Runtime (CLR) ausgeführt wird, und nicht verwalteter Code, der außerhalb der Kontrolle der CLR ausgeführt wird, übertragen werden.

Techopedia erklärt Richtungsattribute

InAttribute und OutAttribute sind die beiden C # -Richtungsattribute, die zur Zuordnung zu den COM-IDL-Attributen (Interface Definition Language) des Komponentenobjektmodells verwendet werden. InAttribute ordnet zu und OutAttribute ordnet zu zu. Der Rückgabewert der Signatur der verwalteten Methode wird in einer Typbibliothek zugeordnet. Es ist wichtig, das richtige Richtungsattribut für Methodenparameter anzugeben, damit die exportierende Typbibliothek die In / Out-Bits korrekt setzt.


Durch Anwenden von InAttribute und OutAttribute in Arrays und formatierten nicht ausblendbaren Typen (die keine gemeinsame verwaltete und nicht verwaltete Speicherdarstellung haben) sieht der Aufrufer Änderungen an den Angerufenen. Richtungsattribute, die auf diese Typen angewendet werden, reduzieren unnötige Kopien beim Marshalling.


In C # werden InAttribute und OutAttribute in drei Formen mit zwei Schlüsselwörtern während der Anrufer- und Angerufenen-Kommunikation verwendet:

  • "out" - impliziert
  • "ref" - impliziert,
  • (Keine Angabe) - (standardmäßig)

Die Schlüsselwörter out und ref werden für Werttypen und serialisierbare Referenztypen verwendet. Das Schlüsselwort ref impliziert, dass der Parameter in beide Richtungen gemarshallt wird, und out impliziert die Übertragung von Verbindungsdaten. Wenn ref oder out nicht verwendet werden, bedeutet dies, dass Daten an den Angerufenen übertragen werden.


Beispielsweise sendet eine .NET-Clientanwendung einen Eingabewert an eine COM-Komponentenmethode, die das Eingabewertergebnis berechnet und das Ergebnis an den Client zurückgibt. Richtungsattribute können auf die Parameter des Verfahrens angewendet werden, das die Anforderung bedient, indem der erforderliche Marshalling-Typ für den Eingabewert und das Ergebnis angegeben wird.


Richtungsattribute weisen die folgenden Merkmale auf:

  • Optional und wird zur Entwurfszeit auf Methodenparameter angewendet
  • Wird nur für COM-Interop und Plattformaufruf unterstützt
  • InAttribute kann nicht auf einen Parameter mit einem out-Schlüsselwort angewendet werden

Der CLR-Interop-Marshaller stellt zur Laufzeit einen Marshalling-Service bereit, indem er Methodenaufrufargumente verarbeitet und Werte zwischen verwaltetem und nicht verwaltetem Speicher zurückgibt. Wenn keine Richtungsattribute definiert sind, bestimmt der Marshaller den Richtungsfluss basierend auf dem Parametertyp und dem Modifikator (falls vorhanden). Der Marshaller funktioniert folgendermaßen:

  • Die als "In" -Parameter aus nicht verwaltetem Code übergebenen Daten werden nicht überschrieben. Somit können nur Nur-Lese-Daten wie Daten, auf die gleichzeitig zugegriffen wird, weitergeleitet werden.
  • Beim Übergeben von Objekten - wie z. B. Basis- oder Binärzeichenfolgen (BSTR) - mit festgelegter Speicherzuordnung wird die richtige Zuordnungs- / Freigabereihenfolge gemäß den In- / Out-Einstellungen befolgt.
Diese Definition wurde im Kontext von C # geschrieben.
Was sind Richtungsattribute in c? - Definition aus techopedia