Innholdsfortegnelse:
Definisjon - Hva betyr retningsbestemmelser?
Retningsattributter, i C #, er koder som brukes til å spesifisere objektmetodeparameter (er) med informasjon relatert til retningsstrømmen til data mellom innringeren og callee.
Retningsattributter styrer marsjering - der et objekt er forberedt for overføring over en applikasjons- eller prosessgrense - av metodeparameterens retning og returverdier. Retningsattributter brukes for å modifisere runtime marskalking mens man kommuniserer administrert kode, som utføres av Common Language Runtime (CLR), og unmanaged code, som utføres utenfor kontrollen av CLR.
Techopedia forklarer retningsbestemmelser
InAttribute og OutAttribute er de to C # retningsattributtene som brukes til å kartlegge komponentobjektmodellens (COM) Interface Definition Language (IDL) attributter. InAttribute-kart til, og OutAttribute-kart til. Den administrerte metodesignaturen returnerer verdikartene til i et bibliotek. Det er viktig å spesifisere riktig retningsattributt til metodeparametere, slik at eksporttypebiblioteket setter inn / ut-bitene riktig.
Ved å bruke InAttribute og OutAttribute i matriser og formaterte ikke-bli-typer (som ikke har vanlig administrert og ustyrt hukommelsesrepresentasjon), ser innringeren callee-endringer. Retningsattributter brukt på denne typen reduserer unødvendige kopier under marskalking.
I C # brukes InAttribute og OutAttribute i tre former med to nøkkelord under samtaler og callee-kommunikasjon, som følger:
- "ut" - implisitter
- "ref" - Implikasjoner,
- (Ingen spesifisert) - (som standard)
Ut- og ref-nøkkelordene brukes for verdityper og serialiserbare referansetyper. Ref nøkkelordet innebærer at parameteren er marskalt i begge retninger, og ut innebærer callee dataoverføring. Når ref eller out ikke brukes, innebærer dette at data overføres til callee.
For eksempel sender en .NET-klientapplikasjon en inngangsverdi til en COM-komponentmetode, som beregner inngangsverdieresultatet og returnerer resultatet til klienten. Retningsattributter kan brukes på parametrene til metoden som betjener forespørselen ved å indikere den nødvendige marskingtype for inngangsverdi og resultat.
Retningsattributter har følgende egenskaper:
- Valgfritt og brukt på metodeparametere på designtidspunktet
- Støttes bare for COM interop og plattform
- InAttribute kan ikke brukes på en parameter med et søkeord ut
CLR interop-marshaler tilbyr marsjeringstjeneste ved kjøring ved å håndtere metodeanrops argumenter og returnere verdier mellom administrert og ustyrt minne. Hvis retningsattributter ikke er definert, bestemmer marshaleren retningsstrømmen basert på parametertypen og eventuelt modifikator. Marshaleren opererer på følgende måte:
- Det overskriver ikke dataene som er gitt som en "In" -parameter fra ubehandlet kode. Dermed kan bare skrivebeskyttede data, som samtidig tilgjengelige data, sendes.
- Når du passerer objekter - for eksempel grunnleggende eller binære strenger (BSTR) - med etablert minnetildeling, følges den riktige allokerings- / avdelingssekvensen i henhold til Inn / ut-innstillingene.
