Привет. Провожу первые эксперименты с managed С++. Сразу возник вопрос: каким образом можно превратить (следует превращать) нативный GUID в managed Guid? Думаю, что можно через конверсию GUID-а в строку, но это как-то...
Спасибо
Re: managed Guid из native GUID
От:
Аноним
Дата:
28.10.06 10:26
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Привет. Провожу первые эксперименты с managed С++. Сразу возник вопрос: каким образом можно превратить (следует превращать) нативный GUID в managed Guid? Думаю, что можно через конверсию GUID-а в строку, но это как-то... А>Спасибо
Смотри в MSDN "Interop Marshaling", в частности аттрибут MarshalAs.
GUID не передавал, и, честно говоря, лень пробовать. Но — GUID это структура. Определяешь её в managed коде(4 поля кажется, uint. Каждое поле определяешь с собственным аттрибутом MarshalAs.), обязательно задаешь последовательное расположение аттрибутом StructLayout[Sequential]. Передаешь её в параметре с аттрибутом MarshalAs[Struct](хотя может тебе надо передавать как указатель на структуру — тогда посмотри соответствие параметра для unmanaged в managed, однозначно void* — IntPtr ).Можешь указать аттрибут Out/In для направления передачи.
Вроде всё.
Но может для GUID можно всё проще сделать, есть value-тип Guid в Framework — посмотри, может его можно приспособить.
Re[2]: managed Guid из native GUID
От:
Аноним
Дата:
29.10.06 20:20
Оценка:
Здравствуйте, Аноним, Вы писали:
А>GUID не передавал, и, честно говоря, лень пробовать. Но — GUID это структура.
Что такое нативный GUID — это понятно. Вопрос скорее наоборот — что такое managed Guid.
А>Но может для GUID можно всё проще сделать, есть value-тип Guid в Framework — посмотри, может его можно приспособить.
Я сейчас так делаю: конвертирую нативный GUID в юникодовскую строку, каковую передаю параметром конструктору безымянного объекта System::String, ссылку на который, в свою очередь, передаю в конструктор managed Guid-а (во как). В двух словах: