Re: Перевод структуры в набор байтов.
От: Time Россия  
Дата: 24.10.08 08:02
Оценка:
Здравствуйте, Nikolkos, Вы писали:

N>Можно так:

N>
N>        public static byte[] RawSerialize<T>(T anything) where T : struct {
N>            int rawsize = Marshal.SizeOf(anything);
N>            byte[] rawdata = new byte[rawsize];
N>            GCHandle handle = GCHandle.Alloc(rawdata, GCHandleType.Pinned);
N>            Marshal.StructureToPtr(anything, handle.AddrOfPinnedObject(), false);
N>            handle.Free();
N>            return rawdata;
N>            }
N>


Как быть когда структура содержит в себе String? Особенно если его надо преобразовать в набор Ansi байтов с длинной в начале.
[MarchalAs(UnamagedType.AnsiBStr)]
public String helloStr;

При таком раскладе
int rawsize = Marshal.SizeOf(anything);

Выдаёт исключение что мол нельзя определить размер структуры.

Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.