Съдържание:
Определение - Какво означават посочените атрибути?
Атрибутите за насочване в C # са маркери, използвани за определяне на параметър (и) на обектния метод с информация, свързана с насочен поток на данни между повикващия и повикващия.
Насочените атрибути контролират маршалинг - където обект е подготвен за прехвърляне през границата на приложението или процеса - на посоката и връщащите стойности на параметъра на метода. Атрибутите за насочване се прилагат за модифициране на преобразуване на време на изпълнение по време на комуникация на управляван код, който се изпълнява от общия език на изпълнение (CLR) и неуправляем код, който се изпълнява извън контрола на CLR.
Техопедия обяснява посоките на посоката
InAttribute и OutAttribute са двата посока на C # атрибути, използвани за картографиране на атрибутите на езика за дефиниране на интерфейс (COM) на компонентния обект (COM). InAttribute карти към, и OutAttribute карти към. Управляваният метод връща стойността на подписа, се преобразува в библиотека тип Важно е да определите правилния атрибут за насочване към параметрите на метода, така че библиотеката от тип експортиране правилно да задава битовете за вход и изход.
Прилагайки InAttribute и OutAttribute в масиви и форматирани не-блитващи типове (които нямат общо управлявано и неуправлявано представяне на паметта), обаждащият се вижда промени на повикващите. Атрибутите за насочване, приложени към тези типове, намаляват ненужните копия по време на маршируването.
В C # InAttribute и OutAttribute се използват в три форми с две ключови думи по време на комуникация на повикващия и повикващ, както следва:
- "навън" - Implies
- "ref" - Implies,
- (Не е посочено) - (по подразбиране)
Ключовите думи out и ref се използват за типове стойности и сериализируеми референтни типове. Ключовата дума ref означава, че параметърът е поставен в двете посоки и out означава прехвърляне на данни на callee. Когато ref или out не се използват, това означава, че данните се прехвърлят на извикващия.
Например, .NET клиентско приложение изпраща входна стойност към метод на COM компонент, който изчислява резултата от стойността на входната стойност и връща резултата на клиента. Атрибутите за насочване могат да бъдат приложени към параметрите на метода, обслужващ заявката, чрез посочване на необходимия тип преобразуване за входна стойност и резултат.
Атрибутите за насочване имат следните характеристики:
- Незадължително и се прилага към параметрите на метода по време на проектиране
- Поддържа се само за COM interop и извикване на платформа
- InAttribute не може да бъде приложен към параметър с външна ключова дума
CLR interop marshaler предоставя услуга за маршалиране по време на изпълнение, като обработва аргументи за извикване на метода и връща стойности между управлявана и неуправляема памет. Ако атрибутите за насочване не са дефинирани, маршалерът определя насочен поток въз основа на типа параметър и модификатор (ако има такъв). Маршалът работи по следния начин:
- Той не презаписва данните, предадени като "In" параметър от неуправляем код. По този начин могат да се предават само данни само за четене, като едновременно достъп до данни.
- Докато предавате обекти - като основни или двоични низове (BSTR) - с установено разпределение на паметта, правилната последователност на разпределение / разместване се следва в съответствие с настройките за вход / изход.
