Obsah:
Definice - Co znamená Directional Atributes?
Směrové atributy, v C #, jsou značky používané k určení parametrů metody objektu s informacemi týkajícími se směrového toku dat mezi volajícím a volaným.
Směrové atributy řídí zařazování - tam, kde je objekt připraven k přenosu přes hranici aplikace nebo procesu - směr a návratové hodnoty parametru metody. Směrové atributy se používají k úpravě runtime zařazování při komunikaci spravovaného kódu, který se provádí pomocí Common Language Runtime (CLR), a nespravovaného kódu, který se provádí mimo kontrolu CLR.
Techopedia vysvětluje směrové atributy
InAttribute a OutAttribute jsou dva směrové atributy C #, které se používají k mapování na atributy IDL (Component Object Model Interface Definition Language) modelu Component Object Model. Mapy atributů do a Mapy atributů do. Vrácená hodnota podpisu spravované metody se mapuje do knihovny typů. Je nezbytné zadat správný směrový atribut k parametrům metody, aby exportující knihovna typů správně nastavila vstupně / výstupní bity.
Při použití atributů InAttribute a OutAttribute v polích a formátovaných neblokovatelných typech (které nemají společné znázornění spravované a nespravované paměti), volající vidí změny v callee. Směrové atributy aplikované na tyto typy snižují zbytečné kopie během zařazování.
V C # jsou InAttribute a OutAttribute použity ve třech formách se dvěma klíčovými slovy během komunikace volajícího a volajícího takto:
- "out" - naznačuje
- "ref" - naznačuje,
- (Není uvedeno) - (ve výchozím nastavení)
Klíčová slova out a ref se používají pro typy hodnot a typy serializovatelných odkazů. Klíčové slovo ref znamená, že parametr je zařazen v obou směrech, a out znamená přenos dat Callee. Pokud není použit odkaz nebo out, znamená to, že jsou data přenesena do callee.
Například klientská aplikace .NET odešle vstupní hodnotu metodě komponenty COM, která vypočítá výsledek vstupní hodnoty a vrátí výsledek klientovi. Směrové atributy lze aplikovat na parametry způsobu obsluhy požadavku uvedením požadovaného typu zařazování pro vstupní hodnotu a výsledek.
Směrové atributy mají následující vlastnosti:
- Volitelné a aplikované na parametry metody v době návrhu
- Podporováno pouze pro COM interop a platformu
- InAttribute nelze použít na parametr s klíčovým slovem out
Interpreta maršálů CLR poskytuje službu řazení za běhu zpracováním argumentů volání metod a návratových hodnot mezi spravovanou a nespravovanou pamětí. Pokud nejsou definovány směrové atributy, určí maršál směrový tok na základě typu parametru a modifikátoru (pokud existuje). Marshaler pracuje následujícím způsobem:
- Nepřepisuje data předaná jako parametr „In“ z nespravovaného kódu. Lze tedy předávat pouze data pouze pro čtení, stejně jako data přístupná současně.
- Při předávání objektů - například základních nebo binárních řetězců (BSTR) - se zavedeným přidělením paměti se dodržuje správná alokační / deallokační sekvence podle nastavení In / Out.